Re: [問題] 中央堆疊記憶體配置與釋放
這問題要從兩個角度分析
1.C/C++語言層次
行為未定義,結果不確定,就這樣
2.assembly語言層次,以下舉X86架構
每個函數皆有自己的stack frame,從高到低為
parameter----->return address------>local variable
因為這情況下compiler通常會把g跟f的記憶體位址配置成一樣
若compiler實作時,沒有特別去處理範圍以外的stack的內容,就會出現下列情形
f執行完畢---->main x指向f y,*x=20---->呼叫g時先複製值給g的參數y,g y=20
---->main x指向g x,*x=10---->main y=10
版本一的解答真的會害死人.......
這邊我可以再舉一個類似的例子
int a(){
return 123;
}
int b(){
a();
}
int main(){
printf("%d\n",b());
}
請問main的輸出為?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.247.105
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1397715851.A.65D.html
※ 編輯: loveflames (220.130.247.105), 04/17/2014 14:27:31
推
04/17 17:54, , 1F
04/17 17:54, 1F
→
04/17 17:54, , 2F
04/17 17:54, 2F
推
04/17 21:54, , 3F
04/17 21:54, 3F
→
04/17 21:54, , 4F
04/17 21:54, 4F
→
04/17 21:55, , 5F
04/17 21:55, 5F
推
04/17 22:50, , 6F
04/17 22:50, 6F
→
04/18 00:05, , 7F
04/18 00:05, 7F
→
04/18 11:45, , 8F
04/18 11:45, 8F
→
04/18 14:53, , 9F
04/18 14:53, 9F
→
04/18 14:53, , 10F
04/18 14:53, 10F
推
04/18 14:58, , 11F
04/18 14:58, 11F
→
04/18 15:00, , 12F
04/18 15:00, 12F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
3
25
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章