jar*_*eve 0 c++ null pointers segmentation-fault
我正在寻找关于这段代码的澄清.对A :: hello()的调用有效(我期望一个segv).segfault确实通过对成员x的访问,所以看起来单独的方法解决方案实际上并没有取消引用bla?
我编译优化关闭,gcc 4.6.3.为什么不把bla->你好()爆炸?只是想知道'发生了什么事.谢谢.
class A
{
public:
int x;
A() { cout << "constructing a" << endl; }
void hello()
{
cout << "hello a" << endl;
}
};
int main()
{
A * bla;
bla = NULL;
bla->hello(); // prints "hello a"
bla->x = 5; // segfault
}
Run Code Online (Sandbox Code Playgroud)
您的程序显示未定义的行为."似乎工作"是未定义行为的一种可能表现形式.
特别是,bla->hello()调用似乎有效,因为hello()实际上并没有this以任何方式使用,所以它恰好不会注意到它this不是一个有效的指针.
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |