我正在寻找对这段代码的澄清。对 A::hello() 的调用有效(我期望一个 segv)。段错误确实发生在对成员 x 的访问上,所以似乎单独的方法解析实际上并没有取消引用 bla?
我在关闭优化的情况下编译,gcc 4.6.3。为什么 bla->hello() 不爆炸?只是想知道发生了什么。谢谢。
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
}