He overloadded nueva [] como estoC++ consulta nueva sobrecargada []: ¿Qué tamaño toma como parámetro? operador
void * human::operator new[] (unsigned long int count){
cout << " calling new for array with size = " << count << endl ;
void * temp = malloc(count) ;
return temp ;
}
y ahora llamando
human * h = new human[14] ;
dicen sizeof(human) = 16
, pero cuentan que se imprime es 232, que es 14 * 16 + sizeof (int *) = 224 +8.
¿Por qué se asigna este espacio adicional? ¿Y dónde cae en la memoria? Porque cuando imprimo *h
O h[0]
obtengo los mismos resultados, por lo que no está en el comienzo del fragmento de memoria. ¿Es correcto en absoluto O me falta algo aquí?
Buena pregunta. Sin embargo, el nítido dentro de mí necesita señalar que no se verifica que malloc() devuelva un puntero nulo. – sharptooth
@sharptooth: está bien, pero eso fue intencional porque quería centrarme en la pregunta real y no agregar demasiados ifs. Idealmente, uno debe verificar la temperatura. = 0 else arrojar alguna excepción (bad_alloc un poco) –
Los bytes adicionales son para almacenar la cantidad de bytes asignados. Pero donde almacena depende de la implementación. – bjskishore123