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