#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' オブジェクト ポインターに対して、上記のコードで 2 つのオブジェクトのみが作成されるかどうかを知りたいです。ポインタ「b2」にはメモリが割り当てられていないと思います。その場合、最後の「 cout << b2->a 」でセグメンテーション違反が発生します。メモリを割り当てていない場所にアクセスしています。しかし、セグメンテーション違反は発生していません。コンパイラはランダムな値を出力するだけです。
私の質問は、「ここに 3 つのオブジェクトにメモリが割り当てられているのか、それとも 2 つだけなのか」ということです。セグメンテーション違反がないのはなぜですか?