【发布时间】:2015-03-07 16:55:42
【问题描述】:
我想初始化内存以用于需要上限为 2gb 的存储。基本上,我需要分配 2gb 内存,然后将项目添加到内存中,并且在添加项目时,确保它不会溢出分配的内存。我在看calloc(),因为这些项目应该存储在一个数组中,但它只允许我根据项目的数量和项目的大小来分配内存。因为我没有特定数量的物品,或者物品的特定尺寸,所以这不行。有没有办法我可以分配一个 2gb 数组,并让项目的数量和项目的大小动态>
【问题讨论】:
-
元素是否必须存储在连续的内存中?元素有多大?在任何情况下,一个普通的 C++ 数组(包括 std::vector)都不在了,因为它们只支持具有单一固定大小的单一类型。如果您提供一些有关您想要实现的目标的信息,也会很有帮助。
-
嗯,元素大小不一,但会被压缩,是的,内存应该是连续的。基本上,一个程序会发送经过压缩和编码的字符串,然后将它们存储在内存中并稍后查找它们。我有点想从头开始实现我自己的数据存储:/
-
我不明白这需要如何连续存储元素。到目前为止,我的第一反应是使用
list<string>或任何其他类似的容器。您可以将该容器包装在一个跟踪已用内存量的类中,以便将其限制在某个限制。
标签: c++ arrays memory memory-management