2015-06-16 49 views
1

我需要重載new []/delete []來維護內存資源。 但是我發現new []會爲析構函數分配4個字節(int)。 所以問題是: 如何知道新[]分配4個字節的類數組正確釋放內存?如何知道某個類是否有析構函數

+1

只需在您分配的類型上調用sizeof(...)。 –

+3

請注意,術語是「析構函數」而不是解構函數 –

+0

你應該解釋爲什麼你需要精確地重載new/delte。 – MagunRa

回答

1

由於new將爲您的Type類類型分配sizeof(Type)字節,因此您可以使用該字段代替硬編碼值。

+0

這不包括數組大小。 'new T [N]'可能需要'N * sizeof(T)+ sizeof(size_t)'。 – MSalters

0

因爲編譯器爲非簡單類型添加了一個int,所以我找到了一個在delete []中沒有釋放的方法,只需調用delete並讓它處理這種情況。

相關問題