arry 是一個指標變數,存的內容是一個地址。
arry 雖然被銷燬了,arry 的值——一個地址——對應的空間內的內容又沒被銷燬。
arry又不在get的棧幀上,arry說不定就不在棧上。
首先,return語句的執行是在區域性變數,引數等被銷燬之前,而且return的是值,所以無論arry, index後來是不是被銷燬了,這個表示式arry[index]的值已經計算出來了,準備好被return了,對吧。
然後問題就變成了,銷燬int *的時候,其所指向的元素會不會被銷燬。答案是顯然不會呀,古往今來洩漏在這個上面的記憶體,估計都數不清了。
所以,綜上所述,arry[index]的值是arry指向的元素之一,而int *的arry被銷燬時並不會銷燬其指向的元素們(因為這是一個傻指標),這個元素也依然安全地活在記憶體中,那無論是返回值還是返回對它的引用,都是安全的。
首先宣告,我也是個菜鳥!
個人認為,樓主理解錯誤,
arry是指標變數,它接收呼叫它的函數里傳進來的陣列指標!也就是arry自己是個區域性變數指標,並不是它指向的那塊記憶體是區域性呼叫才建立的記憶體,離開子函式時,銷燬的是指標變數arry,並不是銷燬arry指向的那塊兒記憶體!
呵呵噠,誰說這返回的是區域性變量了,
arr和index都是區域性變數,但是arr[index]沒有被銷燬,