内存管理——c++中涉及图形的大型测试用例(使用STL)抛出std::bad_alloc



我们正在研究一个图(存储为邻接表实现)算法实现,它需要我们存储以下内容:

  1. 一个二维n到n的距离矩阵(存储为浮点数数组)
  2. 每对顶点之间的最短路径的数量(存储为整数数组)。
  3. 对于所有可能的源点选择,每个顶点的前身取一个给定顶点作为源顶点。这是O(n*n*k)其中k是所有顶点在所有可能的源顶点选择上的平均前导数。在最坏的情况下,这可能是O(n^3)个空间。然而,前任的平均数量可能很小。(k是常数)前任存储为两级映射,前任列表存储为STL向量。

我们尝试在大图形(>2^12个顶点)上测试,运行一段时间后抛出std::bad_alloc。即使在8GB(Ubuntu 12.04)或16GB(仅使用3GB内存)上运行也是如此。你能告诉我们如何让大型测试用例工作吗?或者我们在哪里出错了吗?

尝试在64位操作系统上以64位模式编译代码。

最新更新