如何将对象数组存储在内存中?

时间:2011-11-28 15:18:03

标签: c++ arrays memory memory-management

我知道为数组分配了一块连续的内存块。

我的第一个问题是当数组元素是一个对象而不是一个内置类型时,什么存储在为数组保留的连续内存中?对象的指针或对象的实际数据?我的猜测是指针存储在数组中,实际的对象随机存储在堆中。我是对的吗?

我的第二个问题是现在我们要为对象数组保留指定的内存(例如,共享内存)。实现这一目标的最佳方法是什么?我应该逐个序列化指定内存中的实际对象并使用相对指针(例如,索引)来访问它们中的每一个吗?

3 个答案:

答案 0 :(得分:5)

一点也不正确。数组T[N]包含类型N的{​​{1}}个元素,直接存储在连续的内存中。该数组占用了T个字节的内存。

相反,为了回答你的第二个问题,任何N * sizeof(T)个字节的内存都可用于保存N * sizeof(T)类型的N元素(可能受某些对齐限制)。< / p>

答案 1 :(得分:0)

不,除非你有一个指针数组,否则会存储这些对象。通常,c++会按照您的要求行事,并且不会自由。

将对象存储在共享内存中取决于对象的性质,我认为你基本上更好地坚持使用普通数据。

答案 2 :(得分:0)

不,存储对象本身。数组的名称只是为您提供了指向第一个元素的指针,然后您可以使用指针算法来遍历数组。