Re: [問題] 傳回記憶體位址

看板C_and_CPP (C/C++)作者 (我是殺菌)時間15年前 (2011/01/18 21:45), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《darkgerm (黑駿)》之銘言: : 我在某個教學網站中看到這段程式碼: : // 傳回建立的陣列位址 : int* createArray(int m) { : int *a = new int[m]; : for(int i = 0; i < m; i++) { : a[i] = 0; : } : } : 然後 main 裡寫這樣: : int *arr = createArray(m); : 真的可以這樣寫嗎? : 那個 a 不會在函式結束後,自動free掉? : 這種問題自己測試也測不出個什麼所以然... : 有辦法測出程式有沒有 undefined behaviour 嗎? : 還是只能等程式炸了才發現有地方寫錯= =||| 不會釋放掉,除非使用 delete a; 才會釋放掉。 函式是不是少一個 return a; 所以,你要記得使用 delete 釋放,不然會 Memory leak 喔! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.96.156

01/18 21:47, , 1F
正確來說是 delete [] a; XD
01/18 21:47, 1F

01/18 21:50, , 2F
真的少了耶 忘了複製冏 謝謝回答>"<
01/18 21:50, 2F

01/19 09:44, , 3F
對耶 一樓正解,不能使用 delete a;
01/19 09:44, 3F
文章代碼(AID): #1DDPc0fL (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1DDPc0fL (C_and_CPP)