In der C-Programmierung können Sie jede Art von Zeiger als Argument an free übergeben. Woher weiß er, wie groß der Speicher ist, der freigegeben werden soll? Immer wenn ich einen Zeiger an eine Funktion übergebe, muss ich auch die Größe übergeben (d.h. ein Array mit 10 Elementen muss 10 als Parameter erhalten, um die Größe des Arrays zu kennen), aber ich muss die Größe nicht an die free-Funktion übergeben. Warum nicht, und kann ich dieselbe Technik in meinen eigenen Funktionen verwenden, damit ich nicht die zusätzliche Variable für die Länge des Arrays mit mir herumschleppen muss?
Antwort
Zu viele Anzeigen?
Varun Chhangani
Punkte
1068
Wenn wir malloc aufrufen, verbraucht es einfach mehr Byte von seiner Anforderung. Diese mehr Byte Verbrauch enthalten Informationen wie Prüfsumme, Größe und andere zusätzliche Informationen. Wenn wir free zu diesem Zeitpunkt aufrufen, geht es direkt zu diesen zusätzlichen Informationen, wo es die Adresse findet und auch findet, wie viel Block frei sein wird.
- See previous answers
- Weitere Antworten anzeigen