class A
{
public:
A();
~A();
int X;
};
A::A()
{
X = 5;
int Y = 4;
}
//..... in another file
A * objectOnHeap = new A();
Trong trường hợp này, vì "objectOnHeap" là trên heap, X cũng có trên heap mặc dù nó không phải là đặc biệt mới? Và trong trường hợp này Y được cấp phát trên ngăn xếp (và tất nhiên nằm ngoài phạm vi), đúng không?Biến thành viên của một đối tượng trên heap cũng tự động trên heap?
Tôi tự hỏi nếu tôi đã nhận được dây của tôi vượt qua khi cố gắng để hình dung cách thức các đối tượng được lưu trữ trong bộ nhớ.
'objectOnHeap' là * không * trên heap. Nó nằm trên ngăn xếp hoặc trong phân đoạn dữ liệu. Giá trị của nó là một con trỏ, mà * điểm * cho một cái gì đó trên đống. –
@Rob Kennedy, bạn có thể giải thích về phân đoạn dữ liệu không? Tôi thấy điểm của bạn mặc dù con trỏ chính nó là trên stack nhưng dữ liệu nó trỏ đến được lưu trữ trên heap. – BuckFilledPlatypus