[問題] 傳回記憶體位址

看板C_and_CPP (C/C++)作者 (黑駿)時間15年前 (2011/01/18 21:41), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/2 (看更多)
我在某個教學網站中看到這段程式碼: // 傳回建立的陣列位址 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

01/18 21:48, , 1F
你得delete[] arr;
01/18 21:48, 1F

01/18 22:07, , 2F
不會自動消失
01/18 22:07, 2F

01/18 22:35, , 3F
int *a會消失 所以要return a; 但是a所指向的陣列不會消失
01/18 22:35, 3F
文章代碼(AID): #1DDPXr7z (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DDPXr7z (C_and_CPP)