看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
flax00298:可是delete[]好像也可以當delete用耶...這裡是故意測的 07/14 11:19
ledia:可以就是可以, 不可以就是不可以, 到底哪來的 "好像可以" 07/14 11:26
adrianshum:寫 array 超過邊界測起來也不一定會死, 是不是又代表 07/14 11:41
adrianshum:這樣做是可以呢? 07/14 11:41
flax00298:因為我不確定到底ok不ok阿~只是我用到現在還沒出包過 07/14 12:48
QQ29:你是用VC還是dev寫的? 07/14 12:58
flax00298:DEV 07/14 13:09
adrianshum:要是真的可以的話, 當初就不會分delete和delete[] 了啦 07/14 15:36