我正在使用 C++,我有以下结构:
结构 ArrayOfThese { 诠释一个; 诠释 b; }; 结构数据点 { 诠释一个; 诠释 b; 诠释 c; };
在内存中,我希望在每个 DataPoint 的末尾有 1 个或多个 ArrayOfThese 元素。每个 DataPoint 的 ArrayOfThese 元素的数量并不总是相同。
因为我有大量的数据点要组装然后通过网络流式传输,所以我希望我的所有数据点及其 ArrayOfThese 元素是连续的。为固定数量的 ArrayOfThese 元素浪费空间是不可接受的。
在 C 语言中,我会在 DataPoint 的末尾创建一个元素,声明为ArrayOfThese d[0];
,分配一个 DataPoint 加上足够的额外字节用于我拥有的许多 ArrayOfThese 元素,并使用虚拟数组对它们进行索引。(当然,ArrayOfThese 元素的数量必须在 DataPoint 的字段中。)
在 C++ 中,使用放置新的和相同的 0 长度数组是正确的方法吗?如果是这样,placement new 是否保证从同一个内存池对 new 的后续调用将连续分配?