【发布时间】:2014-04-28 09:03:33
【问题描述】:
我需要找到 10000 个点的数据集的所有对距离。我正在使用向量在 C++ 中编码来存储点。这是我的向量:
vector <vector <double> > data.
vector <vector <double> > dist.
我正在从文件中读取输入数据并存储在数据中。然后我计算所有对的距离并将其存储在 dist 中。
它适用于高达 8000 点的小型数据集。但是当我为更大的数据集运行相同的代码时,我收到以下错误:
在抛出 'std::bad_alloc' 的实例后调用终止
what(): std::bad_alloc
中止(核心转储)。
我上网了,但找不到解决办法。请帮我解决这个问题。
【问题讨论】:
-
在 8000 个点的情况下,您有 6400 万个双精度向量,每个向量至少需要 512MB。可能你的内存不够用大数据集。
-
操作系统不想给你的程序更多的内存。可能是因为你消耗的太多了。
-
对于数据集的每个点,你有多少个 double?很明显,您的内存不足。您必须问自己的问题:我使用的内存是否超出了我的需要?有没有办法用更少的内存捕获数据?
-
你是在 32 位运行吗?
标签: c++ vector bad-alloc large-data