我已經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