C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 调用std :: map :: clear的分段错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
几个月来我一直在努力解决分段错误,现在我来这里寻求帮助.
当我调用以下函数时出现分段错误

void foo(...,std::map<MyClass*,double> & X) {
if ( !x.empty() ) x.clear();
...
}

Class A {
private:
map<MyClass*,double> _N;
public:
void f(...) {
foo(...,_N);
...
}
};

//in main routIne,the function is called in a loop
A a;
while(...) {
a.f(...);
}

使用gdb,我将错误添加调用clear()函数的行,它显示“double free or corruption”错误,程序在调用c /4.1.2/ext/new_allocator.h:94删除退出(__ p)它进一步从gnu库/lib64/libc.so.6调用free().但由于地图中的元素不是由new分配的,为什么它仍然会调用free()来清除它.我非常感谢你的评论.谢谢.

解决方法

鉴于地图由另一个对象拥有,可疑地听到在调用clear时已经删除了地图拥有对象.

另请注意,以下划线和大写字母开头的名称是为实现保留的 – 您不能使用它们.

大佬总结

以上是大佬教程为你收集整理的c – 调用std :: map :: clear的分段错误全部内容,希望文章能够帮你解决c – 调用std :: map :: clear的分段错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。