Frage zu malloc... (resp. Speicherzuweisung)
-
Hallo,
ich habe eine kleines Problem zu malloc, das wie folgt aussieht:
eine struct:
struct sDistances { sObject_Property pDistanceObjectProperties[2]; int iDimension; };
und im code die Zuweisung:
... sDistances* pDistances; pDistances = (sDistances*) malloc(sizeof(sDistances)); ...
wenn ich jetzt mit
pDistances->pDistanceObjectProperties[0];
auf das Objekt zugreifen möchte dann crasht das Programm.
Wenn ich die Speicherallocation aber mit
new
mach dann funktioniert es einwandfrei: also das funktioniert:
... sDistances* pDistances; pDistances = new sDistances; ...
WIESO? Was mache ich bei der Speicherzuweisung mit malloc falsch? Kann mir jemand helfen?
Ich danke für Eure Hilfe
chris.
-
sObject_Property hat vielleicht einen Konstruktor? In jedem Fall ist das kein C-Problem, bitte sowas in Zukunft unter C++ posten.
-
Nein, hat keinen Konstruktor, da es sich dabei einfach wieder um eine struct handelt. (und ich denke mir, dass dieses Thema sehr wohl hier rein passt!)
-
Dein Problem kann mit ANSI-C überhaupt nicht nachvollzogen werden, da deine Codeschnipsel C++ sind (von new ganz zu schweigen). Von daher gehört es hier auch nicht her.
Bau mal ein minimales aber komplettes Beispielprogramm, was den Fehler reproduziert, und poste es hier (bzw. im hoffentlich dann nach C++ verschobenen Thread)
-
Wenn es eine Struktur ist, dann sag das dem Compiler auch. Vielleicht liegts ja daran.
struct sDistances { struct sObject_Property pDistanceObjectProperties[2]; int iDimension; }; ... struct sDistances* pDistances; pDistances = (struct sDistances*) malloc(sizeof(struct sDistances)); ...
oder du machst ein typedef der Struktur, dann kannst du dir später die ganzen structs sparen.