Ich habe den Operator new [] wie diesen
überladen %Vor%und jetzt rufen
%Vor% sagen sizeof(human) = 16
, aber zählen Sie es Drucke 232 ist das ist 14 * 16 + sizeof (int *) = 224 + 8.
Warum wird dieser zusätzliche Speicherplatz zugewiesen? Und wo fällt es in Erinnerung?
Weil, wenn ich *h
ODER h[0]
drucke, bekomme ich dieselben Ergebnisse, so dass es nicht im Beginn des Speicherblocks ist. Ist es überhaupt richtig oder ich vermisse etwas hier?
Der zusätzliche zugewiesene Speicherplatz wird verwendet, um die Größe des Arrays für die interne Verwendung zu speichern (in der Praxis, damit delete[]
weiß, wie viel gelöscht werden soll).
Es ist am Anfang des Speicherbereichs gespeichert, unmittelbar vor &h
. Um das zu sehen, schau dir einfach den Wert von temp
in deinem operator new[]
an. Der Wert unterscheidet sich von dem in &h
.
Tags und Links c++ new-operator overloading