class A
{
public:
A();
~A();
int X;
};
A::A()
{
X = 5;
int Y = 4;
}
//..... in another file
A * objectOnHeap = new A();
この場合、「objectOnHeap」はヒープ上にあるため、特に新しいものではないにもかかわらずヒープ上のXですか?そしてこの場合、Yはスタックに割り当てられます(もちろん、範囲外になります)、正しいのでしょうか?ヒープ上にあるオブジェクトのメンバー変数も自動的にヒープ上にありますか?
オブジェクトがメモリにどのように格納されているかを考えようとしているときに、ワイヤを交差させてしまったのでしょうか?
'objectOnHeap'はヒープ上に*ない*です。これはスタックまたはデータセグメントにあります。その値はポインタであり、*ヒープ上の何かを指すポインタです。 –
@Rob Kennedy、データセグメントについて詳しく説明できますか?ポインタ自体はスタックにありますが、ポインタが指すデータはヒープに格納されていますが、私はあなたのポイントを見ています。 – BuckFilledPlatypus