Re: [問題] 傳回記憶體位址
※ 引述《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
01/18 21:47, 1F
推
01/18 21:50, , 2F
01/18 21:50, 2F
→
01/19 09:44, , 3F
01/19 09:44, 3F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章