QT程序运行报错:E:\xxx\SogouInput\Components\

报错内容:

        导致这个问题的原因可能有很多,在我学习的项目中每次点击一个特定的位置都会突然程序崩溃,有时还会报错E:\xxx\SogouInput\Components\

        经过debug,我发现每次在释放一个变量的时候都会报一个错:

HEAP[TcpClient.exe]: 
Heap block at 000001DD2F84E650 modified at 000001DD2F84E6AC past requested size of 4c
HEAP[TcpClient.exe]: 
Invalid address specified to RtlFreeHeap( 000001DD26BB0000, 000001DD2F84E660 )

分析原因:

        我找到了两个相关的帖子,上面介绍了这个问题可能出现的原因,贴在这里:c - 如何修复GDB的错误 "Invalid address specified to RtlFreeHeap" - IT工具网 与C++ free指针时的异常_heap[plasma-furnace.exe]: heap block at modified a-CSDN博客

        经过分析,可能是因为我在释放上面这个pdu变量的时候出现问题,根据贴在上面的文章所说可以分析出:在分配空间时不会因为内存分配空间不够出现异常,而是在free时出现异常,同时是我的pdu在定义分配的时候分配的空间与赋值时赋给的内容大小不同,导致free的时候出现了问题。根据这个分析,往pdu定义的位置查看,果然,我pdu定义的数据大小为0,而需要读取一定的内容存在pdu的数据变量中。导致了大小不匹配,造成了溢出。

(此部分错误代码:mkPDU()中的参数表示留出存储数据的大小,按理这个值应该与需求的大小一致,但是这里设定为0,导致了错误)

解决方法:

修改代码为:

        而报错中的E:\xxx\SogouInput\Components\,看上去有个搜狗输入法的文件夹,其实和输入法没什么关系,更多的可能是变量空间地址的问题。看来碰到了这种不好解释的问题还是得老老实实Debug。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值