主题:局部变量引发当机
我碰到一个情况,重复执行代码后就当机。第二次执行和第一次执行一样。奇怪的是第二次当机了。
后来我把一个局部变量修改为动态创建后就不当机了。
奇怪是,第一种情况,用局部变量,变量是压栈的,第一次执行完毕后,第二次压栈应该跟第一次一样啊。
按理第一次没有栈溢出,第二次应该也没溢出才对。
请大家多多指点,谢谢!
以下代码只是简单描述
class B{
int a;
char c;
...
void f(){...};
};
class A{
void f()
{
...
B b ;
b.f(); --当机就是出现在这
...
}
};
int main(){
A *a;
a=new A();
a.f();
delete a;
a=new A();
a.f();
delete a;
}
修改以下后就不当机了
class B{
int a;
char c;
...
void f(){...};
};
class A{
void f()
{
...
B * b = new B();
b->f();
...
}
};
int main(){
A *a;
a=new A();
a.f();
delete a;
a=new A();
a.f();
delete a;
}