[問題] free 和new可以同時使用嗎

看板C_and_CPP (C/C++)作者 (叮噹)時間16年前 (2009/05/05 23:02), 編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/1
可以用FREE 釋放NEW配置的記憶體嗎 int *ptr=new int ; free(ptr); COMPILE會過 程式跑也不會當掉 這樣寫會有什麼影響呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.172.211

05/05 23:04, , 1F
不會叫destructor
05/05 23:04, 1F

05/05 23:10, , 2F
那會有什麼影響呢 就結果來說記憶體是都釋放掉了吧
05/05 23:10, 2F

05/05 23:16, , 3F
有的destructor會再把物件包起的指標也釋放之類,就有問題
05/05 23:16, 3F

05/05 23:16, , 4F
不是喔...你寫個物件陣列你就知道了
05/05 23:16, 4F

05/06 00:01, , 5F
C++ 請用 new & delete,C 請用 malloc & free
05/06 00:01, 5F

05/06 00:06, , 6F
絕對不要這樣做,一方面是 destructor 的問題
05/06 00:06, 6F

05/06 00:07, , 7F
另一方面是new/delete並不一定是用malloc/free實作的
05/06 00:07, 7F

05/06 00:08, , 8F
若物件有用 operator overload 設計自己的 new/delete
05/06 00:08, 8F

05/06 00:09, , 9F
那你用 free 去釋放它,絕對死得很難看
05/06 00:09, 9F
文章代碼(AID): #1A05J_Ru (C_and_CPP)
文章代碼(AID): #1A05J_Ru (C_and_CPP)