c – 调用std :: map :: clear的分段错误

c – 调用std :: map :: clear的分段错误,第1张

概述几个月来我一直在努力解决分段错误,现在我来这里寻求帮助. 当我调用以下函数时出现分段错误 void foo(..., std::map<MyClass*, double> & x) {if ( !x.empty() ) x.clear();...}Class A {private:map<MyClass*, double> _N;public:void f(...) {foo( 几个月来我一直在努力解决分段错误,现在我来这里寻求帮助.
当我调用以下函数时出现分段错误

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 loopA 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的分段错误所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1230920.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存