Forum: PC-Programmierung Dynamische Speicherallokierung in DLL


von Manfred (Gast)


Lesenswert?

Hallo zusammen,

ich nutze den Matlab Coder zur Generierung einer DLL und schaue mir 
anschließend den erzeugten C-Code an. Dabei habe ich noch Probleme mit 
der dynamischen Speicherallokierung.
Ich denke, am besten demonstriere ich das Ganze an einem Beispiel:

Der Matlab Code:
1
function test(vector)
2
    vector = zeros(1,10)
3
end
führt zu den erwarteten Ergebnissen.

Aber der Matlab-Code:
1
    function test(vector, vector_size)
2
vector = zeros(1, vector_size)
3
end

führt in C zu:
1
void test(const double vector_data[], const int vector_size[2], double
2
          b_vector_size)
3
{
4
  (void)vector_data;
5
  (void)vector_size;
6
  (void)b_vector_size;
7
}

So dass ich
a) Drei Argumente beim DLL-Aufruf benötige
b) Die C-Funktion scheinbar keinen Speicher allokiert

Kann mir hier jemand weiterhelfen?

Vielen Dank und viele Grüße,
Manfred

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der C-Code macht rein gar nichts, nicht nur keinen Speicher anfordern.

von Manfred (Gast)


Lesenswert?

Genau, aber der Matlab-Code allokiert ja Speicher. Daher würde ich das 
auch in dem C-Code erwarten und frage mich, was hier schief läuft.

von Rolf M. (rmagnus)


Lesenswert?

Manfred schrieb:
> Genau, aber der Matlab-Code allokiert ja Speicher.

Tut er das? Woran erkennst du das?

> Daher würde ich das auch in dem C-Code erwarten und frage mich, was hier
> schief läuft.

Wozu sollte der C-Code denn Speicher allokieren für etwas, womit du 
nichts tust?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.