[問題] c++ 關於 new/delete 陣列

看板C_and_CPP作者 (\冏/)時間13年前 (2011/03/01 21:58), 編輯推噓0(009)
留言9則, 3人參與, 最新討論串1/1
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

03/01 21:58, , 1F
下面的才對 new搭delete,new []搭delete []
03/01 21:58, 1F

03/01 22:00, , 2F
那為何 delete [] ptr 是不對. 要free 掉陣列,不是這語法嗎
03/01 22:00, 2F

03/01 22:01, , 3F
當初怎麼 new 出來, 就怎麼 delete 嗎?!
03/01 22:01, 3F

03/01 22:01, , 4F
你需要釋放的是一個一個的CBase,而不是整個陣列
03/01 22:01, 4F

03/01 22:03, , 5F
若當初 CBase *ptr = new CBase[20] ,就用 delete [] ptr
03/01 22:03, 5F

03/01 22:04, , 6F
除非是寫 CBase *ptr = new CBase[20];
03/01 22:04, 6F

03/01 22:04, , 7F
謝謝您
03/01 22:04, 7F

03/01 22:04, , 8F
喔喔,你說對了,不過還是要記得它們的差異 XD
03/01 22:04, 8F

03/04 01:27, , 9F
我會從後面砍再歸零
03/04 01:27, 9F
文章代碼(AID): #1DRFji6R (C_and_CPP)