这是我的代码
#include<iostream>
using namespace std;
int *f1(int x) {
return &x;
}
void f2(int a, int b, int c){
cout<<a<<endl;
}
int main() {
cout<<"hari Hari"<<endl;
int *x;
x = f1(90);
f2(3,45,2);
cout<<*x<<endl;
system("PAUSE");
}
现在当f1返回指向堆栈的指针,假设被f2覆盖,并且预期输出应该看起来像这样 &#34; 哈里哈里 3 3 &#34; 但实际上我得到正确答案,我的实际输出是, &#34; 哈里哈里 3 90 &#34; 我无法理解为什么它不会覆盖f1函数的价值&#39; x&#39;。
答案 0 :(得分:3)
您依赖于未定义的行为,这意味着您无法以任何特定方式依赖行为。在你的情况下,你刚刚得到了#34;幸运&#34;。