C: Enthüllung der Unterscheidung zwischen Free-Store und Heap
Im Bereich der dynamischen Speicherzuweisung bietet C zwei Hauptmechanismen: neu /delete und malloc/free. Während beide oft als Betrieb auf dem Heap bezeichnet werden, wirft dies die Frage auf, ob es eine praktische Unterscheidung zwischen den Begriffen „Free-Store“ und „Heap“ gibt.
Gibt es einen klaren Unterschied? Wie gehen Compiler mit diesen Begriffen um?
Die Antwort liegt in der Entwicklung der C-Speicherverwaltung. Historisch gesehen bezog sich der „Heap“ speziell auf den Speicherbereich, der von den malloc/free-Funktionen verwaltet wurde. Mit der Einführung der neuen und gelöschten Operatoren entstand jedoch ein separates „Free-Store“-Konzept. Dies sollte eine Trennung zwischen den beiden Speicherverwaltungssystemen erzwingen und eine versehentliche Vermischung verschiedener Allokatoren verhindern.
Heutzutage ist die Unterscheidung zwischen Free-Store und Heap für C weitgehend konzeptionell geworden. Sowohl new/delete als auch malloc/free weisen Speicher aus demselben Pool zu, der normalerweise vom Betriebssystem verwaltet wird. Die Verwendung bleibt jedoch unterschiedlich. new/delete werden mit Objekten verwendet, die Konstruktoren und Destruktoren erfordern, während malloc/free flexibler sind und für die Rohspeicherzuweisung verwendet werden.
In Interviews wird häufig die traditionelle Unterscheidung betont:
Interviewer räumen jedoch möglicherweise auch ein, dass moderne Compiler diese Unterscheidungen oft nicht strikt durchsetzen, was möglicherweise beiden Operatoren den Zugriff auf denselben Speicherplatz ermöglicht.
Das obige ist der detaillierte Inhalt vonGibt es einen echten Unterschied zwischen dem Free Store und dem Heap in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!