美文网首页
free造成段错误

free造成段错误

作者: ebayboy | 来源:发表于2019-07-29 11:16 被阅读0次

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

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

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

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

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

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

5.  c++编译常会出现free(): invalid next size (fast)或者是free(): invalid next size (normal)的问题,这大多数是内存泄漏的问题。经常出现的情况是动态数组赋值越界,导致最后在进行free时候,出现内存泄漏。解决方法,只能首先定位,然后一步一步自查,发现对数组的操作,然后慢慢带入,考虑极端情况(数组下标过大,或者是-1,等等情况)是否会出现。

相关文章

  • free造成段错误

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

  • new与malloc使用错误造成的段错误

    错误信息:Segmentation fault 段错误 最终改为: 解析 原因:struct Json_Pk为自定...

  • 《国民老公带回家》叶非夜

    一段错误的相遇,错误的身世,造成了一段错误的婚姻。 曾经的他们,青涩而稚嫩;现在的他们,疏远而冷漠。 不管是昨天还...

  • 执行Tez任务错误,虚拟内存不够用

    错误日志: 标红框的地方是记录发现错误的关键点 错误分析 在检查内存中,通过free 命令查看linux的内存是9...

  • 硬件工程师知识点6- BIOS Introduce From P

    Author: Elias Consultant: Vincent/Free 时隔快一年,重回x86.,错误的地方...

  • 段错误

    段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gd tr来保存的,他是一个48位的寄存器,...

  • 段错误

    本文使用 文章同步助手[https://www.jianshu.com/p/5709df6fb58d] 同步

  • webrtc 内存缓存池

    用途 内存缓存池,主要是解决频繁malloc和free内存时,会造成很大的性能开销;而且长时间运行后,会造成很多的...

  • 造成错误“ORA-12547: TNS:lost contact

    造成错误“ORA-12547: TNS:lost contact”的常见原因有哪些? 真题1、造成错误“ORA-1...

  • Free, Free, Free!

    你去商场买东西,好像都没有直接FREE的(免费了怎么挣钱呀,哈哈),不过他们会有打折和促销!有时候倒是有FREE ...

网友评论

      本文标题:free造成段错误

      本文链接:https://www.haomeiwen.com/subject/ghnvrctx.html