我正在使用 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 的后续调用将连续分配?