→ adrianshum:結果應該和實作有關. 有的實作會expect number of 01/12 10:29
→ adrianshum:elements 放在 pointer 前. 也許就是這樣, 它把在 01/12 10:30
→ adrianshum:allocated array 以後的一小部份也當成是要 deallocate 01/12 10:30
→ adrianshum:, 因為裡面會是 garbage, 所以那個 "count" 才會出現奇 01/12 10:31
→ adrianshum:怪的東西. 01/12 10:31
→ adrianshum:看回你的例子看來就是這樣, ptr 前剛好就是 element 10 01/12 10:33
→ adrianshum:裡面很可能就是 "10" 這個值 放在最後, 即是當 delete 01/12 10:34
→ adrianshum:時, 往回找一個 int 的話, 會找到 10, 所以當成要 01/12 10:34
→ adrianshum:deallocate 10 個 element, 即是多d eallocate 一個的 01/12 10:35
→ adrianshum:長度, 就是那個奇怪 count 的那個, 要是你 +=15 的話大 01/12 10:35
→ adrianshum:概會看到 6 次古怪的 destructor (如果你幸運沒有 01/12 10:35
→ adrianshum:runtime error 的話) 01/12 10:36
感謝大大的解答!看來應該正如您所說的沒錯,只是如果+=15的話,實際上會出現9個
因為15前面那個是14,所以會delete 15、16、17、18、19、?、?、?、?、?、?
、?、?、?共九個?=garbage XD
不過想請問一下您說的“實作”的意思?是指IDE嗎?我是用Dev C++ = =
--
我寧以頃刻短暫的繁華,換取千年無盡的落寞。
歡迎大家上我的“部落格”:http://coldstar.5d6d.com/forum-2-1.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.241.120
推 LPH66:應該指的是 Runtime library 的實作 01/12 11:17
→ adrianshum:我耍笨了 XD 簡單加數也算錯了 :P 01/12 14:19
→ adrianshum:總而言之, 不是 new 出來的東西就不要 delete 01/12 14:20