2011-03-20 27 views
8

請考慮下面的代碼:新的或新的[]操作

typedef SomeType type_t[2]; 
SomeType * arr1 = new type_t; //new or new[] ??? 
type_t * arr2 = new type_t[3]; //new or new[] ??? 

根據標準,該標準的new版本將在1次和第2次的情況下(newnew[])被調用,如何刪除arr1arr2 (與deletedelete[])?

+2

說實話,這可能是不好的做法 – deek0146 2011-03-20 14:23:41

+0

這絕對是不好的做法,並可能導致某人頭痛的道路。 – 2011-03-20 16:13:09

回答

9

第一種情況分配一維數組,第二種情況爲二維數組。他們都必須通過delete[]發佈,否則你會得到未定義的行爲。

1

在兩種情況下它都將使用new[]。您可以通過定義operator new[]SomeType並在屏幕上打印某些內容來自行驗證。你會看到它會在兩種情況下打印。