Ich könnte einfach rumprobieren, aber irgendwie kommt es mir so vor, als ob es immer noch eine weitere Fehlerquelle geben könnte...
Also, ich möchte ein Array (da komplett statisch (Anzahl und Größe der Einträge vorher bekannt), kann es sich um einen Speicherblock fester Größe handeln) an eine DLL übergeben, wobei die DLL nicht mit PB geschrieben sein muss.
Was wäre die beste Vorgehensweise?
Speicher reservieren und Pointer übergeben? - Allerdings passiert diese "Übergabe" ziemlich oft (10-20 mal pro Sekunde). Jedesmal ein paar Kb zu reservieren, freigeben scheint eher kontra-produktiv zu sein. Ich stelle mir dann einen "fragmentierten Ram" vor, falls es sowas gibt.
Und überhaupt, müsste dann die DLL nicht den Speicher freigeben, wenn alle Daten verarbeitet wurden? Geht das überhaupt, denn der Speicher wurde ja vom Hauptprogramm reserviert.
Oder kann man aus der DLL eine Prozedur im Hauptprogramm aufrufen, die den Speicher freigibt?
Eine andere Idee wäre einfach den 5- oder 10-fachen Speicherbereich zu reservieren und innerhalb dieses Bereichs "herumspringen" (*buffer + n * arraySize.i)
Somit müsste wenigstens nicht ständig neuer Speicher reserviert und freigegeben werden, sondern nur einmal bei Programmstart reservieren und bei Programmende freigeben.
Aber wie stelle ich dann sicher, dass nicht gleichzeitig geschrieben und gelesen wird?
Ich weiß nicht ob das für das Programm ein Problem ist (IMA), nehme es aber einfach mal an. Selbst wenn nicht, kann das zu unschönen Ergebnissen führen (wenn man sich den Datenstream als Video vorstellt, wären das Pixelfehler).
Und was ist mit Threads? "Threadsave" hat ja wohl auf externe DLLs keinen Einfluss, oder doch?
Fragen über Fragen, ich hoffe es hat jemand eine Antwort

PS: Nein, es gibt keine Doku von der externen DLL, weil die gar nicht existiert. Die DLL soll eine Plugin sein, das von meinem Programm mit dem Array versorgt wird und mit diesen Daten dann macht was es will (z.B. visualisieren, oder über's Netzwerk versenden, was auch immer^^)