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.


Anmelden zum Antworten