我知道为数组分配了一块连续的内存块。
我的第一个问题是当数组元素是一个对象而不是一个内置类型时,什么存储在为数组保留的连续内存中?对象的指针或对象的实际数据?我的猜测是指针存储在数组中,实际的对象随机存储在堆中。我是对的吗?
我的第二个问题是现在我们要为对象数组保留指定的内存(例如,共享内存)。实现这一目标的最佳方法是什么?我应该逐个序列化指定内存中的实际对象并使用相对指针(例如,索引)来访问它们中的每一个吗?
答案 0 :(得分:5)
一点也不正确。数组T[N]
包含类型N
的{{1}}个元素,直接存储在连续的内存中。该数组占用了T
个字节的内存。
相反,为了回答你的第二个问题,任何N * sizeof(T)
个字节的内存都可用于保存N * sizeof(T)
类型的N
元素(可能受某些对齐限制)。< / p>
答案 1 :(得分:0)
不,除非你有一个指针数组,否则会存储这些对象。通常,c++
会按照您的要求行事,并且不会自由。
将对象存储在共享内存中取决于对象的性质,我认为你基本上更好地坚持使用普通数据。
答案 2 :(得分:0)
不,存储对象本身。数组的名称只是为您提供了指向第一个元素的指针,然后您可以使用指针算法来遍历数组。