看板 C_and_CPP 關於我們 聯絡資訊
class CBase { ... } main() { CBase *ptr[20]; /* 宣告 20個指標 */ for (i=0; i<20; i++) ptr[i] = new CBase(); for (i=0; i<20; i++) delete [] ptr; } 想要問一下,在 delete 那邊的語法應該是像上面這樣寫。還是寫成 for (i=0; i<20; i++) delete ptr[i]; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.146.73
james732:下面的才對 new搭delete,new []搭delete [] 03/01 21:58
homal:那為何 delete [] ptr 是不對. 要free 掉陣列,不是這語法嗎 03/01 22:00
homal:當初怎麼 new 出來, 就怎麼 delete 嗎?! 03/01 22:01
james732:你需要釋放的是一個一個的CBase,而不是整個陣列 03/01 22:01
homal:若當初 CBase *ptr = new CBase[20] ,就用 delete [] ptr 03/01 22:03
james732:除非是寫 CBase *ptr = new CBase[20]; 03/01 22:04
homal:謝謝您 03/01 22:04
james732:喔喔,你說對了,不過還是要記得它們的差異 XD 03/01 22:04
stosto:我會從後面砍再歸零 03/04 01:27