#include <iostream>
int* retPointer()
{
int x=10; //same as auto int x =10;
return &x;
}
int main(int argc, char **argv)
{
std::cout<<"x="<<*retPointer()<<std::endl;
return 0;
}
在上面的示例中,我返回了一個指向堆棧的局部變量的指針。當我在man()中打印這個指針指向的值時,我應該得到一個seg-fault。當我從函數retPointer()返回時,變量x應該超出範圍。所以當嘗試訪問main()中的值時,我是否應該得到分段錯誤?我在這裏錯過了什麼嗎?超出範圍時堆棧上的局部變量未被刪除
輸出是= X = 10
歡迎使用未定義的行爲。 – WhozCraig 2013-02-20 15:46:09
您確定這可行嗎?那麼,堆棧幀會丟失,但在函數終止後內存仍然存在,但實際上它不應該發生...... – 2013-02-20 15:47:46
標準說哪裏應該得到seg-fault? – 2013-02-20 15:52:39