DLL-Programmierung
-
Hallo alle,
habe ein Problem bei der Programmierung einer DLL. Die DLL soll in ein in einer anderen Programmiersprache (LabView) programmiertes Programm eingebunden werden. Sie soll hierbei größere Datenmengen (ca. 200 MB) verarbeiten. Leider lässt LabView nur Datenmengen bis 1 GB zu. Bei mehreren Calls der DLL ist die Speicherverwaltung von LabView daher schnell am Ende...ein OutOfMemory-Error ist die Folge, das Programm stürzt ab. Dies ist darauf zurückzuführen, dass in C allokierter Speicher im Kontext von LabView läuft und. Was ich nun tun möchte ist, die Datenmenge zu reduzieren, indem ich sozusagen die Daten auf Festplatte schreibe und von da nur immer genau die Teile lese, die ich zur Verarbeitung brauche. Leider wird dadurch die Geschwindigkeit des Gesamtprogramms geringer, da so öfter Festplattenzugriffe stattfinden. Eine Idee wäre daher, eine Ramdisk zu erstellen und die Daten zur Verarbeitung auf Ramdisk zu schreiben und von dort zu lesen. Da ich aber keine zusätzliche Software dafür installieren möchte nun meine Frage: Ist es möglich, in C++ eine Art Ramdisk anzulegen? Sie muss nicht im Explorer auftauchen. Oder anders formuliert: Gibt es eine Möglichkeit, in einer C++-DLL Speicher zu allokieren, ohne dass das übergeordnete Programm etwas davon merkt? Den Pointer der Speicheradresse könnte ich dann zum Zugriff auf die Daten nutzen...
Hoffe, es ist einigermaßen verständlich was ich suche.
Vielen Dank schon Im Voraus
Christian
-
LabView ist nicht begrenzt auf 1GB. eine Begrenzung findet nur durch das OS statt. Vielleicht ist dein Problem eher die Speicher-Fragmentierung.