如果一个类有一个数组作为其成员,并且该类的一个对象被创建,那么该数组对象在哪里存在。我的意思是这个类的对象停留在堆上,所以这个数组对象作为一个对象保留在这个类的对象中,或者它在堆上有一个独立的存在,并且与类的对象有某种联系。堆上有数组对象存在
0
A
回答
0
由于您正在讨论事物所处的位置以及对象,因此我会猜测您的意思是C++。如果不是这样,正如马特所说的那样,这可能有助于在你的问题中指定,以便知道你正在使用的语言的人可以回答:)。
在C++中,成员数组是否放置在对象内存中,还是单独放在堆上,取决于数组是如何声明的:静态成员数组将放置在对象内,而动态成员数组将存在于新对象堆内存。
如果声明静态数组:
class MyStaticArrayClass
{
int myArray[10];
// ...
};
如果要声明MyStaticArrayClass对象,数组将是MyStaticArrayClass对象本身里面。也就是说,如果你申报你的对象在栈上:
MyStaticArrayClass myObject;
myArray的的内容也将在堆栈上,而如果你在堆上声明你的对象:
MyStaticArrayClass * myObjectPtr = new MyStaticArrayClass;
将该内容的myArray将放在堆上,但在myObjectPtr指向的内存中(当您调用delete myObjectPtr时,MyStaticArrayClass的默认析构函数将负责为您解除分配此内存)。
如果声明动态数组:
class MyDynamicArrayClass
{
int * myArray;
// constructor initializes to myArray = new int[10];
// ...
};
如果声明一个MyDynamicArrayClass对象,阵列将是对堆,外部MyDynamicArrayClass对象本身。 (你需要编写一个自定义的析构函数来调用delete [] myArray)。
相关问题
- 1. 存在的对象数组
- 2. 在函数中创建的对象,是保存在堆栈还是堆上?
- 3. 堆上的对象
- 4. Python是否有静态对象,堆栈对象和堆对象?
- 5. 堆栈上有多少个对象?
- 6. 堆栈或堆上的对象分配
- 7. 堆栈/堆上的对象创建?
- 8. 在堆上声明数组
- 9. C++使用对象上堆
- 10. 在对象上使用数组函数
- 11. 对象数组 - 数据没有正确存储在一副扑克牌上
- 12. 将对象存储在数组中
- 13. 将对象存储在数组中
- 14. localstorage中存在数组的对象
- 15. 存放在JSON数组JSON对象golang
- 16. 在堆上分配的对象
- 17. 编译器可以在堆上为对象分配内存
- 18. 如何上传对象存储在爪哇的堆
- 19. 具有对象数组的对象
- 20. java.lang.OutOfMemoryError:Java堆空间哪些对象正在获取所有内存?
- 21. 堆上的对象的成员变量是否也自动堆在堆上?
- 22. 在堆上传递数组并在堆栈上运行
- 23. 地图上对象的数组在ReactJS
- 24. 在对象数组上使用toString
- 25. 在对象数组上检查ID
- 26. 在jade上迭代对象数组
- 27. 在第二个对象的数组存储对象
- 28. 在数组对象
- 29. 在数组对象
- 30. 在数组对象
它完全取决于编程语言。也许你想指定。 –