c++坏分配错误
C++ bad-alloc error
我需要为10000个点的数据集找到全对距离。我在c++编码使用向量存储点。这是向量:
vector <vector <double> > data.
vector <vector <double> > dist.
我正在从文件中读取输入数据并存储在数据中。然后我计算所有的配对距离并将其存储在dist中。
对于高达8000点的小数据集可以很好地工作。但是,当我运行相同的代码较大的数据集,我得到以下错误:
抛出'std::bad_alloc'实例后终止调用
(): std:: bad_alloc
abort (core dumps).
我已经上网了,但找不到解决办法。
您正在使用太多内存,并且似乎vector无法分配此内存。
如上所述,如果只考虑双精度类型,每个向量大约有512 MB的内存(std::vector类也有一些内部变量和vfptable,分配了8000次)。
std:vector习惯于在每次超过预分配的限制时增加它的大小,以防止在每个新添加的元素上产生昂贵的reallos。
因此,vector的实际大小总是大于vector内部元素的个数。
尝试管理您自己的内存,特别是如果您从一开始就知道元素的数量。
std:vector在你不知道要添加多少元素时非常有用,对于6400万元素的大小绝对不是这样:)。
相关文章:
- vector.resize()中的分配错误
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 正在理解智能指针,但出现错误:未分配正在释放的指针
- 如何修复只读对象中成员的错误分配?
- 无法将错误分配给成员函数中"类型的实体"
- 分段错误分配函数结果
- 如何实现,错误分配中止而不是抛出异常
- C++代码错误分配
- 如何修复错误分配C++运行时错误
- 分段错误 - 分配类困难
- 带有数组类型表达式的错误分配
- Sprintf 缓冲区问题,错误分配给字符数组
- 而 (p=strtok(NULL, "," )) 警告:p可识别的错误分配
- 错误:分配只读位置“arr2.IntArray::operator[](1)”arr2[1]=24;
- std::映射错误分配错误
- 为什么"e.what()"打印"错误分配"?
- std::vector<const char *>的错误分配效果?
- 使用指向类的指针进行错误分配
- 错误:分配只读引用“__b”
- 向量错误分配错误 C++