std::map 赋值出错!

lucky土豆happy 2017-07-28 11:05:06
这个问题出的有点儿怪(之前都运行的好好的,画了两天图,再来跑这个程序竟然就挂了)........一天了也没个头绪,欲哭无泪呀!
就死在map赋值那里,=操作符map里自带的呀!为啥会错?为啥operator=()还要调clear()?一调用clear()就会挂,有遇到类似情况的大侠吗?请给指条明路



...全文
842 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttxiaoxitt 2020-04-21
  • 打赏
  • 举报
回复
我的这个问题解决了。咱俩的报错是相同的。
我是因为多线程导致。
我在两个线程中使用了一个公共的map变量,一个线程A中不断的清除并重新赋值此公共mapA变量,另一个线程B不断的将此公共mapA变量赋值给另一个临时mapTmp变量。然后在某些时候,会在将mapA变量赋值给mapTmp变量时报错。
对两个线程加锁以后问题解决。
wh_ 2017-08-14
  • 打赏
  • 举报
回复
那个GetListInfo是个啥?
sdghchj 2017-07-31
  • 打赏
  • 举报
回复
重新编译,如果不行再看看是否有跨动态库之类的,请确保字节对齐数是一致的。
FancyMouse 2017-07-31
  • 打赏
  • 举报
回复
看见了一个mutex。
唯恐天下不乱 2017-07-31
  • 打赏
  • 举报
回复
引用 8 楼 lcxhappy2004 的回复:
引用 6 楼 shit_moment 的回复:
如果是这样,那肯定有其他的操作导致这儿崩溃了。 这几句代码肯定定位不出问题。 也没问题 [quote=引用 5 楼 lcxhappy2004 的回复:] AgvStatusType 的成员都是基本数据类型,没有动态内存分配。
如果不是这里的问题,我应该从哪个方向去找问题的原因呢?[/quote] 查看这个变量相关的操作。 如果确认都没有问题。把这个变量相关的操作都注释掉,看看是不是就不崩溃了。 如果还崩溃,那就说明是有一些其他的操作导致了这个问题。 一点一点屏蔽,一点一点定位吧。
lucky土豆happy 2017-07-30
  • 打赏
  • 举报
回复
引用 6 楼 shit_moment 的回复:
如果是这样,那肯定有其他的操作导致这儿崩溃了。 这几句代码肯定定位不出问题。 也没问题
引用 5 楼 lcxhappy2004 的回复:
AgvStatusType 的成员都是基本数据类型,没有动态内存分配。
如果不是这里的问题,我应该从哪个方向去找问题的原因呢?
唯恐天下不乱 2017-07-28
  • 打赏
  • 举报
回复
给这点信息就想把问题解决了? 什么类型?这个变量有哪些相关的操作?
赵4老师 2017-07-28
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
lucky土豆happy 2017-07-28
  • 打赏
  • 举报
回复
快来个大侠给指条路吧!
lucky土豆happy 2017-07-28
  • 打赏
  • 举报
回复
引用 6 楼 shit_moment 的回复:
如果是这样,那肯定有其他的操作导致这儿崩溃了。 这几句代码肯定定位不出问题。 也没问题
引用 5 楼 lcxhappy2004 的回复:
AgvStatusType 的成员都是基本数据类型,没有动态内存分配。
谢谢,帮忙分析! 我不明白为啥=赋值时去调用clear(),之后会去调erase(),然后就崩溃了,因为root()取到的头节点指针为null,但是为啥是空?既然是size为0的为空也是很正常的不是吗?那为啥会崩溃掉难道要先给map分配足够大空间吗?不科学呀!operator=不就是给它赋值的吗?
唯恐天下不乱 2017-07-28
  • 打赏
  • 举报
回复
如果是这样,那肯定有其他的操作导致这儿崩溃了。 这几句代码肯定定位不出问题。 也没问题
引用 5 楼 lcxhappy2004 的回复:
AgvStatusType 的成员都是基本数据类型,没有动态内存分配。
lucky土豆happy 2017-07-28
  • 打赏
  • 举报
回复
AgvStatusType 的成员都是基本数据类型,没有动态内存分配。
lucky土豆happy 2017-07-28
  • 打赏
  • 举报
回复
引用 3 楼 shit_moment 的回复:
给这点信息就想把问题解决了? 什么类型?这个变量有哪些相关的操作?
变量类型如下: std::map<int, AgvStatusType> map_agv_status_; AgvStatusType 就是个结构体类,一个构造函数把所有成员初始化,然后就没有其他的成员函数了。

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧