1

全部!

我正在尝试在内存中加载一组文件。对于每个文件,加载大约 10000 个条目。应该完全有可能将整个信息保存为内存(我以 Mb 为单位计算大小,应该适合),但是,在某些时候,我总是从尝试存储条目的向量中得到 bad_alloc 异常。

第一个问题是,使用向量可以分配的内存限制是多少?在异常之前分配的元素数量甚至不接近 max_size()

第二个问题是,我可以使用 stl 或 boost 中的哪种结构将整个集合加载到内存中?

我很乐意提供任何帮助!

4

1 回答 1

1

无论您的代码实际做什么以及您在什么环境上运行它,有一件事是确定的:std::vector分配连续存储。这意味着由于地址空间(内存?)碎片,您将得到这个结果,因为没有空间可以连续分配所有内容。

如果您发现这种情况正在发生,请使用非连续容器(如std::list)或确保一次仅将块加载到内存中,而不是整个加载。

于 2013-10-20T14:30:26.323 回答