我已经overloadded操作者新的[]这样C++重载新的[]查询:它需要多大的参数?
void * human::operator new[] (unsigned long int count){
cout << " calling new for array with size = " << count << endl ;
void * temp = malloc(count) ;
return temp ;
}
现在调用
human * h = new human[14] ;
说sizeof(human) = 16
,但算它打印是232,其是14 * 16 +的sizeof(INT *)= 224 +8。
为什么要分配这个额外空间?它在哪里落在内存中? 因为当我打印*h
或h[0]
我得到相同的结果,所以它不在内存块的开始。它是否正确或我在这里错过了一些东西?
好问题。然而,我内部的nitpicker需要指出,你不检查malloc()返回一个空指针。 – sharptooth 2010-10-25 07:27:35
@sharptooth:你的权利,但这是故意因为我想专注于真正的问题,而不是添加太多的ifs :)理想情况下,需要检查temp!= 0否则抛出一些异常(bad_alloc kinda) – 2010-10-25 08:00:42
额外的字节用于存储分配的字节数。但是,它存储的地方是与实施相关 – bjskishore123 2010-10-25 08:31:24