Du musst nicht selber Speicher belegen.
Doch doch, eben schon.
MyStruct*
bzw.
MyStruct&
als Parameter in C/C++ bedeutet, dass du selbst einen Zeiger/Referenz übergibst. Den Speicher für das dahinterliegende Struct musst du durchaus selbst (entweder auf dem Stack oder dem Heap) bereitstellen. Als Zeiger/Referenz übergibt man die Structs, wenn man deren Inhalt ändern möchte (C/C++ kennt kein
var
).
const MyStruct*/&
sieht man auch ab und zu, wobei es sich hierbei nur um eine manuelle Optimierung handelt, damit der Inhalt der
Structs beim Aufruf nicht auf den Stack gepusht werden.
Wie Neutral General schon angedeutet hat, ist
MyStruct*
äquivalent zu
var (T)MyStruct
in Delphi, was wiederrum äquivalent zu
PMyStruct
ist.
Die
Dll liefert Dir den Pointer auf das Struct zurück.
In dem Falle wäre es
MyStruct**
bzw.
MyStruct*&
Edit: Falsch gelesen, ist ja sogar
void**