回 帖 发 新 帖 刷新版面

主题:局部变量引发当机

我碰到一个情况,重复执行代码后就当机。第二次执行和第一次执行一样。奇怪的是第二次当机了。

后来我把一个局部变量修改为动态创建后就不当机了。


奇怪是,第一种情况,用局部变量,变量是压栈的,第一次执行完毕后,第二次压栈应该跟第一次一样啊。

按理第一次没有栈溢出,第二次应该也没溢出才对。


请大家多多指点,谢谢!



以下代码只是简单描述

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;
}


回复列表 (共1个回复)

沙发

A *a;
a.f(); //你确定你用的是c++么?怎么会用点来通过指针访问对象成员。

我来回复

您尚未登录,请登录后再回复。点此登录或注册