#include <iostream>
using namespace std;
class test
{
public:
int a,b[100];
test() {
cout << "Constructor called" << " \n " ;
a=10;
}
};
int main()
{
test a1;
test *b2;
test *pointer = new test;
cout << a1.a << endl;
cout << pointer->a << " \n ";
cout << b2->a << " \n ";
return 0;
}
我想知道上述代码是否只创建了两个对象,即'a1'对象和指针对象'pointer'。我假设指针'b2'没有分配内存。在这种情况下,“cout << b2->a”应该会创建一个段错误。因为我正在访问未分配内存的位置。但我没有得到段错误。编译器只是打印一个随机值。
我的问题是“这里分配了三个对象还是只有两个对象”? 为什么没有发生段错误?