#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 ”应该会造成分段错误。我正在访问一个尚未分配内存的位置。但我没有得到分段错误。编译器只是打印一个随机值。
我的问题是“这里是三个对象分配内存还是只有两个”?为什么没有分段错误?