【发布时间】:2018-05-27 08:12:03
【问题描述】:
当我运行我的程序进行多次迭代时出现以下错误:
terminate called after throwing an instance of 'std::bad_alloc'
我已阅读并发现这是与内存相关的问题。我正在使用二维向量来存储数据并进行一些处理。每当我将向量传递给另一个函数时,我都会使用&vector_name,但无法确定发生了什么。
我应该在每次处理迭代后使用vector_name.clear(); 吗?我正在做 1000 多次,所以这有帮助吗?关于我可以检查的任何其他指针将不胜感激。
在 for 循环结束时抛出异常。
for (int i = 0; i <= 10000; i++){
init_increasing_list = std::vector<int>(adj_list[vertex].begin() + 1, adj_list[vertex].end());
candidate = MaxClique(initial_vertex, initial_increasing_list, adj_list);
if (candidate.size() > max_size){
max = candidate;
max_size = max.size();
std::cout << max_size << std::endl;
}
std::cout << "Loop ended" << std::endl;
}
【问题讨论】:
-
可能需要显示更多代码。
-
你应该检查
adj_list[vertex]至少有两个元素。 -
顺便说一句:同时拥有“adj_list”和“adjacency_list”是对错误派对的公开邀请。