我需要创建一个拥有可以无限增长的列表的对象。列表中的项目是由基本类型组成的结构。
所以,我想知道如果它增长太多,使用它的向量是否会导致内存碎片化。如果是这样,我应该使用什么呢?
指向矢量的指针是否足够?如果向量存储在对象之外,我不知道内存碎片是否不那么重要。
答案 0 :(得分:0)
来自评论:
在我拥有的最大的测试案例中,最大列表的母对象有10000个元素。但是,在这种情况下,有23000个母对象。所以,我们可以说总共230,000,000个"基本结构"因为没有比这更大的案例,所以最大限度。
使用矢量。
当您需要的最大连续内存数组包含大约10000个元素时,您不应该担心内存碎片(假设每个元素占30个字节,这意味着300kB)。今天的内存模型足够高效,它们可以管理几千字节的连续内存。如果您想了解有关内存碎片的更多信息,请here's a question about it。
你可以拥有很多"母对象"没关系,因为他们不需要在记忆中连续。
如果你想深入挖掘,你也可以阅读deques。
答案 1 :(得分:0)
除非序列非常大,否则它不应该产生很大的不同,但是矢量使用连续的内存,因此它们不会导致碎片,而如果你使用列表,它会要求不同的空间记忆的一部分,女巫最终可能导致分裂。