Ich habe neue overloadded Operator [] wie folgtC++ überladen neue [] Abfrage: Welche Größe braucht es als Parameter?
void * human::operator new[] (unsigned long int count){
cout << " calling new for array with size = " << count << endl ;
void * temp = malloc(count) ;
return temp ;
}
und jetzt
human * h = new human[14] ;
sagen sizeof(human) = 16
nennen, aber zählen druckt es ist 232, die 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 die gleichen Ergebnisse, so ist es nicht im Anfang des Speicherstücks. Ist es überhaupt richtig ODER fehlt mir hier etwas?
Gute Frage. Doch der Nitpicker in mir muss darauf hinweisen, dass Sie nicht nach malloc() suchen, das einen Nullzeiger zurückgibt. – sharptooth
@Sharptooth: ur richtig, aber das war absichtlich coz ich wollte auf echte Frage konzentrieren und nicht zu viele Wenns :) Idealerweise muss man auf temp zu überprüfen! = 0 sonst werfen einige Ausnahmen (bad_alloc irgendwie) –
Extra-Bytes sind zum Speichern die Anzahl der zugewiesenen Bytes. Aber wo es speichert ist abhängig von der Implementierung. – bjskishore123