看板 C_and_CPP 關於我們 聯絡資訊
我在某個教學網站中看到這段程式碼: // 傳回建立的陣列位址 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