free报错问题的原因总结

时隔多年回来更新

重要的事情说三遍:用工具!用工具!用工具!

vld/地址消毒等+gdb,就搞定啦

以下原文:

———————————————————————————————————————————

前一段时候在做项目的时候碰到了运行时程序崩溃的问题,定位到了是free(p);这个语句出错误,找了半天资料解决了,现在写下一点自己的总结。

这个问题有可能是以下4个原因构成,一一排查一般都可以解决:

1 释放一个空指针,这个就不用多说了,短点调试不会也会打印吧 printf("%x",p);可以打印出16进制数

2 重复释放,这个问题也很好解决,在所有的释放语句后都赋值指针为空,按照1来排查

3 释放一个非自己申请的内存,或者释放的指针指向的地方不是本进程申请的。这个的排查方式就是在所有的MALLOC申请的时候打印出地址,看看和释放的对应不对应。具体看1

4 申请的内存块写过界了或者被写过界了,此时内存块就被破坏了,释放的时候为了避免释放掉其他有用的数据,是会报错,这个时候只能靠自己的能力一步步看下每次对内存的操作,比如拷贝,书写有没有踩掉其他块的内存,具体问题具体分析。一般上面三步发现都没问题的,肯定是这里的问题,不要放弃,多看看代码,关注下内存size,字节对齐等,这正是个很好的锻炼机会。

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当安装JDK后,如果在打开FreeMind时出现报错,可能是由于Java运行环境的问题导致的。 FreeMind运行需要Java Runtime Environment(JRE),所以安装JDK并不会解决这个问题。首先,你需要确保已经正确安装了JRE。如果你之前安装过JDK,但是依然报错,可能是因为注册表存在问题,可以尝试重新安装JRE来解决。 另外,如果报错信息是"the Registry refers to a nonexistent java runtime environment installation",有两种解决办法可以尝试。第一种是直接卸载JDK,并在注册表中删除相关项,然后重新下载并安装JDK。在相同的路径下,检查是否存在"JavaSoft"这个项。如果存在,重新运行FreeMind应该就没有问题了。第二种方法是不卸载JDK,而是更改JDK的路径。这样可以解决FreeMind点击没有反应的问题总结起来,如果在安装JDK后,FreeMind出现报错,可以尝试以下解决办法: 1. 确保正确安装了JRE,因为FreeMind需要JRE才能正常运行。 2. 检查注册表,如果出现"the Registry refers to a nonexistent java runtime environment installation"的报错信息,可以尝试先卸载JDK,并删除相关注册表项,然后重新安装JDK。 3. 如果不想卸载JDK,可以尝试更改JDK的路径来解决FreeMind点击无反应的问题。 希望以上解决办法能帮助你解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [freemind问题合集](https://blog.csdn.net/weixin_43490695/article/details/120704727)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [解决 FreeMind 报错 This application requires a Java Runtime Environment 1.5.0](https://blog.csdn.net/qq_39220334/article/details/122362257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值