Wie überprüfen ob reservierter Speicher freigegeben wurde?
-
Hallo,
ich habe ein kleines Problem.
Und zwar ich reserviere mir Speicher:p = calloc(100,sizeof(char));
Diesen Speicher lasse ich mir dann in einem Thread freigebene:
free(argv);
Ich will ich aber im Hauptthread überprüfen ob dieser Speicher wirklich freigegeben wurde.
Wenn nicht soll z.B mittels Sleep() 5 Sekunden gewartet werden.
Wie kann ich jetzt von meinem Hauptthread aus überprüfen ob der Speicher im Nebenthread freigegeben wurde?
Setzt free() den Zeiger automatisch auf NULL?
-
freedomForMemory schrieb:
Setzt free() den Zeiger automatisch auf NULL?
Nein.
-
Was für möglichkeiten habe ich dann zu überprüfen ob der Speicher frei gegeben wurde?
-
free schlägt niemals fehl wenn die adresse richtig war
-
Du kannst dir natürlich eine Funktion basteln:
void my_free (void **blob) { free (*blob); *blob = NULL; }
Sinnvoller wäre es aber eine sinnvollere Methode zu überlegen, so dass nicht main reserviert und thread freigibt, sondern entweder main reserviert und gibt frei (wenn thread durch), oder thread reserviert und gibt wieder frei.
-
Tim schrieb:
Sinnvoller wäre es aber eine sinnvollere Methode zu überlegen, so dass nicht main reserviert und thread freigibt, sondern entweder main reserviert und gibt frei (wenn thread durch), oder thread reserviert und gibt wieder frei.
^^besser wär's. ansonsten müsstest auch noch sicherstellen, dass während der benutzung einem thread kein anderer thread den speicher unterm hintern weg-free'd.