Mögliche Duplizieren:
C programming : How does free know how much to free?Wie kann free() wissen, wie viel Speicher freigegeben wird?
Wenn in C-Programmierung, ich malloc()
oft verwenden Speicher zuzuweisen und free()
um sie zu lösen:
MyObject* objArr= (MyObject*) malloc(sizeof(MyObject)*numberOfObjects);
/** Do stuff **/
free(objArr);
Wie weiß free()
, wie viel Speicher entziehen? Erzeugt malloc()
eine Tabelle irgendwo, um sich Zeiger zu merken und wie viel Speicher jeder Zeiger zeigte?
Wenn das der Fall ist, wird free()
fehlschlagen, wenn ich den Zeiger umbenenne? z.B .:
MyObject* objArr= (MyObject*) malloc(sizeof(MyObject)*numberOfObjects);
MyObject* newPtr= objArr;
free(newPtr); /** Does this fail? **/
Was passiert, wenn ich den Zeiger erhöht und dann free()
laufen? Beispiel:
Wird es ein zusätzliches Stück Speicher gerade aus dem Ende des ursprünglichen Arrays freigeben?
Duplizieren von http://stackoverflow.com/questions/1518711/c-programming-how-does-free-know-how-much-to-free – codaddict