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

在用c语言写数据结构的链表的时候,执行也没有什么大错,逻辑也是对的,但是一道free函数会自动触发一个断点。如图:

这个断点产生的原因是由于分配的内存太小了在使用的时候没有任何问题,但是在执行程序的时候,遇到free函数便直接终止了,最后发现使写数据时越界了,使用malloc分配内存时会多分配一些内存用于存储申请到的内存信息,在free的时候会读取这段内存中的信息,写越界会导致这段信息被覆盖,使free无法正确的释放内存,导致程序出错。出现这种情况的原因有很多,我出现这个问题的原因是在为结构体分配内存时使用的是指针类型,但是却被当作结构体来使用。这种错误的类型是不会报错的。

这个地方出现了错误,本来是打算分配一个结构型,结果分配了一个指针类型的,由于内存分配的太小,所以产生了错误。

应该这样改:

相关推荐
Thomas_YXQ20 分钟前
Unity3D Overdraw性能优化详解
开发语言·人工智能·性能优化·unity3d
lanbing27 分钟前
PHP 与 面向对象编程(OOP)
开发语言·php·面向对象
yzx99101327 分钟前
Gensim 是一个专为 Python 设计的开源库
开发语言·python·开源
麻雀无能为力1 小时前
python自学笔记2 数据类型
开发语言·笔记·python
招风的黑耳1 小时前
Java集合框架详解与使用场景示例
java·开发语言
xrkhy1 小时前
java中XML的使用
xml·java·开发语言
抽风的雨6101 小时前
【python基础知识】Day 27 函数专题2:装饰器
开发语言·python
martian6652 小时前
医学影像系统性能优化与调试技术:深度剖析与实践指南
开发语言·系统安全·dicom
y102121042 小时前
Pyhton训练营打卡Day27
java·开发语言·数据结构
AA-代码批发V哥2 小时前
Java类一文分解:JavaBean,工具类,测试类的深度剖析
java·开发语言