内存有效的方法来创建可以无限增长的动态列表属性

时间:2016-06-21 10:56:28

标签: c++ attributes dynamic-list

我需要创建一个拥有可以无限增长的列表的对象。列表中的项目是由基本类型组成的结构。

所以,我想知道如果它增长太多,使用它的向量是否会导致内存碎片化。如果是这样,我应该使用什么呢?

指向矢量的指针是否足够?如果向量存储在对象之外,我不知道内存碎片是否不那么重要。

2 个答案:

答案 0 :(得分:0)

来自评论:

  在我拥有的最大的测试案例中,最大列表的母对象有10000个元素。但是,在这种情况下,有23000个母对象。所以,我们可以说总共230,000,000个"基本结构"因为没有比这更大的案例,所以最大限度。

使用矢量。

当您需要的最大连续内存数组包含大约10000个元素时,您不应该担心内存碎片(假设每个元素占30个字节,这意味着300kB)。今天的内存模型足够高效,它们可以管理几千字节的连续内存。如果您想了解有关内存碎片的更多信息,请here's a question about it

你可以拥有很多"母对象"没关系,因为他们不需要在记忆中连续。

如果你想深入挖掘,你也可以阅读deques。

答案 1 :(得分:0)

除非序列非常大,否则它不应该产生很大的不同,但是矢量使用连续的内存,因此它们不会导致碎片,而如果你使用列表,它会要求不同的空间记忆的一部分,女巫最终可能导致分裂。