frage zu free() dumm aber hilft mir plz!!!



  • halo mein prob ist folgendes

    ich habe ein struct

    typedef struct T
    {
    int a;
    int b;
    }T;
    typedef struct LA
    {
    T *Bla;
    int next;
    }LA;
    

    wenn ich jetzt free() auf LA mache dann wird doch die daten T nicht zerstort oder?. Bei C++ schon (mit destructor) bei c doch nicht glaub ich bin mir aber nicht 100% sicher so 99,99999999‾ (die matemakieren werden bestimt jetzt asauer werden :P)?, ich weis wenn ich wo anders nicht die adrese speicere hab ich die fur immer verloren aber das ist jetzt nicht das problemm. Bitte hilft mir ich hab keine lust speter ein run time error zu bekomen. Bitte nur 100% antworten, will nur sicher sein danke im voraus.



  • wehn du free auf LA variaple machst bleiben der variabbel auf den wo bla zeigit natrüllich vorhande



  • so wie der code da steht, kannst du eh nicht free() auf TA anwenden.
    aber die struktur, auf die bla zeigt, wuerde noch bestehen.



  • @c.rackwitz: "T" und "LA" in dem Quelltext sind keine Variablen, sondern typedef's 😉

    @Master User: Wenn du nur die LA Variable freigibst, beeinflußt das das Ziel von Bla überhaupt nicht - schließlich weiß dein Programm ja nicht, wer sonst noch auf diese Daten zugreift (und ob das überhaupt eine Heap-Variable ist).

    T my_T;                          //liegt auf dem Stack
    LA* my_LA = malloc(sizeof(LA));
    my_LA->Bla=&my_T;                //Bla verweist auf den Stack
    //...
    free(my_LA);                     //und jetzt stell dir mal vor, das würde my_T pulverisieren
    


  • Gut, dannke ich muss wiiiiiiirklich aufhoren verdorbenes zeug zu essen es beinflust sogar meine rechtschreibung hahahaha...


Anmelden zum Antworten