c语言调用free,提示已触发了一个断点。

使用malloc申请一段内存,在使用的时候没有任何问题,但是在执行free使程序直接终止了,最后发现使写数据时越界了,使用malloc分配内存时会多分配一些内存用于存储申请到的内存信息,在free的时候会读取这段内存中的信息,写越界会导致这段信息被覆盖,使free无法正确的释放内存,导致程序出错。出现这种情况的原因有很多,我出现这个问题的原因是在为结构体分配内存时使用的是指针类型,但是却被当作结构体来使用,这个问题在编译的时候是不会有提示的,很难排查,所以平时编码的时候还是要多注意。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 内存是计算机非常关键的部件之一,是暂时存储程序以及数据的空间,CPU只有有限的寄存器可以用于 存储计算数据,而大部...
    dreamer_lk阅读 5,234评论 2 10
  • 很多新学C语言的童鞋在用到动态内存分配的时候,对选择哪种分配函数及其有何区别搞不清楚,那么下文就认真的讲讲它们的种...
    Leon_Geo阅读 4,712评论 0 2
  • 几种语言的特性 汇编程序:将汇编语言源程序翻译成目标程序编译程序:将高级语言源程序翻译成目标程序解释程序:将高级语...
    囊萤映雪的萤阅读 8,068评论 1 5
  • 内存分类 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈:在执行函数...
    码哥说阅读 3,440评论 0 3
  • 1 文件结构 每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件...
    Mr希灵阅读 7,939评论 0 13

友情链接更多精彩内容