Re: [問題] pointer的double free

看板C_and_CPP (C/C++)作者 (Alien)時間16年前 (2009/07/14 11:11), 編輯推噓4(404)
留言8則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《flax00298 (NI)》之銘言: : int main() : { : int* x=new int; : *x =10; : delete[] x; : delete[] x; : } : 我寫個程式長這樣 : 不過也沒有發生什麼不幸的事情 : 我們常看到的double free : 不是就是這種情形嗎? : 還是說 : 是free第一次之後有用其他的pointer : 所以那一塊的heap memory就被其他pointer使用 : 結果在之後又free第二次了 : 所以就free到不該free的地方這樣嗎? 1) deallocate 兩次不一定會死, 但不代表不會死. 就像用 array 超過邊界之類, 也不一定會死. 2) new 請配搭 delete. 要是你寫的是 int* x = new int[10]; 之類才用 delete[] -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82

07/14 11:19, , 1F
可是delete[]好像也可以當delete用耶...這裡是故意測的
07/14 11:19, 1F

07/14 11:26, , 2F
可以就是可以, 不可以就是不可以, 到底哪來的 "好像可以"
07/14 11:26, 2F

07/14 11:41, , 3F
寫 array 超過邊界測起來也不一定會死, 是不是又代表
07/14 11:41, 3F

07/14 11:41, , 4F
這樣做是可以呢?
07/14 11:41, 4F

07/14 12:48, , 5F
因為我不確定到底ok不ok阿~只是我用到現在還沒出包過
07/14 12:48, 5F

07/14 12:58, , 6F
你是用VC還是dev寫的?
07/14 12:58, 6F

07/14 13:09, , 7F
DEV
07/14 13:09, 7F

07/14 15:36, , 8F
要是真的可以的話, 當初就不會分delete和delete[] 了啦
07/14 15:36, 8F
文章代碼(AID): #1AM_ToXN (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1AM_ToXN (C_and_CPP)