看板 EE_DSnP 關於我們 聯絡資訊
我在寫作業的時候對delete產生了一點疑惑... 我本來以為delete是刪除一個object用的,而delete[]是刪除多個用的 但是我在main()中宣告 double* d = new double[1]; 之後不管我寫delete d; 或delete []d; 執行都會成功 而且就算我是宣告double* d = new double[0]; 時也可以 可是我寫了一個class叫做C,在main()中 C* c = new C[1]; delete c; 這樣執行就不過了,一定要用delete[]才OK 是因為宣告時如果有用[ ],delete的時候就要加嗎? 可是在double的時候好像不用加[]也行? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.245.114
ric2k1:new [] 的變數用 delete 只會 delete 其中的一個,其他的 10/11 22:20
ric2k1:會變成 memory leak. 照理來說不會馬上 crash,如果會crash 10/11 22:20
ric2k1:應該是其他原因 10/11 22:21
ric2k1:簡單的說: 用 new [] 就要用 delete [], 反之用 new 則要用 10/11 22:22
ric2k1:delete. 10/11 22:22
ric2k1:明天上課會再說明一下。 10/11 22:23
puerpuella:謝謝教授!!我後來又試了一下如果我C裡面沒寫destructor 10/11 22:34
puerpuella:就不會有事,可是一加上~C()就掛了.. 10/11 22:34
ric2k1:這個跟去年的 HW1.2 P3 有關... 我明天來一起講解一下! 10/11 23:04
johnjohnlin:要作 deep copy 吧?我之前也這樣 10/12 15:50