C++进入函数崩溃结构体赋值崩溃问题

前段时间遇到两种崩溃问题

 一个是进入函数崩溃,同事遇到的,我没有代码,只是截取片段来看看了很久没看出问题

一个基类A派生出子类B,C,D,然后用map存了std::map<int,A*> ,实际只存了一个值A* pTestA = new B,后面逻辑中取出这个值调用它的一个虚函数,进入函数就崩溃,开始下意识都觉得可能是类指针被销毁或者虚函数指针指向问题,实际调试发现,类指针正常,里面成员函数和变量地址都正常,虚函数指针也和创建时候一样,而且把类单独拿出来调试只是把函数实现改一下发现也正常。最后才发现是这个函数内部有个变量申请的控件非常大,char data[4*1024*1024]导致进入函数就由于栈区内存过大而崩溃。

另一个是自己遇到的,传入一个QString ,在给一个自定义结构体赋值的时候崩溃,断点调试发现结构体里面已经初始化但是声明的变量中去看对应的成员显示问号未知内存,成员都是变量不是指针,然后把QString改为std::string仍然不行,但是用成员变量去分别接收这些传入的值就正常,只要定义这个结构体的变量来接收就崩溃,然后全局查了下这个结构体发现另一个地方有定义过,因为这个逻辑有两种实现方式并没有公用的头文件去定义公共变量,另一地方定义过,而且成员有差别导致这个问题。所以命名空间还是很有必要的,而且尽量把数据结构定义在公共的头文件中

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值