重複の可能性:ローカル変数
または一時変数のアドレスを返す
ローカル変数のメモリにそのスコープ外でアクセスできますか?
次のコードがあるとします
int *p;//global pointer
void foo() {
int a=10;//created in stack
p = &a;
}//after this a should be deallocated and p should be now a dangling pointer
int main() {
foo();
cout << *p << endl;
}
これが機能する理由を知りたかった..セグメント障害である必要があります!
OK 未定義の動作は適切なようです..もう一度確認できますか? 次のコードで上記のことをシミュレートしようとしましたが、現在は SIGSEGV になります。
int main() {
int *p=NULL;
{
int i=5;
int *q = &i;
p=q;
delete q;//simulates the deallocation if not deallocated by the destructor..so p becomes a dangling pointer
}
cout << *p << endl;
}