free und 2-dim void*



  • Hallo,

    ich habe eine Verstaendnisfrage:
    ich habe einen void* Pointer. Dieser zeigt auf ein Pointer von Pointer Array,
    zB char**. Beide "Dimensionen" wurden vorher allokiert. Nun will ich den
    allokierten Speicher komplett wieder freigeben.

    Muss ich dann eigentlich sowas wie...

    free( ((char**) ptr)[idx] ); // fuer jedes einzelne Array
    

    ...und dann ein...

    free( ((char**) ptr) );
    

    ...machen, oder reicht ein einfaches...

    free( ptr );
    

    ...aus, weil es doch ein void* Pointer ist?
    😕



  • voidfree schrieb:

    ...machen, oder reicht ein einfaches...

    free( ptr );
    

    ...aus, weil es doch ein void* Pointer ist?
    😕

    Nein, woher soll free() denn wissen, dass der Speicher auf weiteren freizugebenden Speicher zeigt?



  • Für jedes *alloc() ein free().


Anmelden zum Antworten