作者darkgerm (黑駿)
看板C_and_CPP
標題[問題] 傳回記憶體位址
時間Tue Jan 18 21:41:06 2011
我在某個教學網站中看到這段程式碼:
// 傳回建立的陣列位址
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 嗎?
還是只能等程式炸了才發現有地方寫錯= =|||
--
光明 的背後 是 黑暗
黑暗 的背後 還是 黑暗
由此可知 黑暗 > 光明 Q.E.D.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.135.59
推 hylkevin:你得delete[] arr; 01/18 21:48
推 shec1213:不會自動消失 01/18 22:07
→ wawi:int *a會消失 所以要return a; 但是a所指向的陣列不會消失 01/18 22:35