Re: [問題] pointer的double free
※ 引述《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
07/14 11:19, 1F
→
07/14 11:26, , 2F
07/14 11:26, 2F
→
07/14 11:41, , 3F
07/14 11:41, 3F
→
07/14 11:41, , 4F
07/14 11:41, 4F
推
07/14 12:48, , 5F
07/14 12:48, 5F
推
07/14 12:58, , 6F
07/14 12:58, 6F
推
07/14 13:09, , 7F
07/14 13:09, 7F
→
07/14 15:36, , 8F
07/14 15:36, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章