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

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

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

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

应该这样改:

相关推荐
CodeCraft Studio5 小时前
Excel处理控件Aspose.Cells教程:使用 C# 从 Excel 进行邮件合并
开发语言·c#·excel
小超爱编程6 小时前
纯前端做图片压缩
开发语言·前端·javascript
我不是加奈6 小时前
QMC5883L的驱动
c语言·驱动开发·单片机·嵌入式硬件
青小莫7 小时前
数据结构-C语言-链表OJ
c语言·数据结构·链表
KIDAKN8 小时前
java--怎么定义枚举类
java·开发语言
海天胜景8 小时前
C# 中常用的 字符串截取方法
开发语言·c#
tkevinjd9 小时前
C++中线程库的基本操作
开发语言·c++
CodeWithMe9 小时前
【C/C++】不同防止头文件重复包含的措施
c语言·开发语言·c++
子豪-中国机器人10 小时前
C++ 信息学奥赛总复习题答案解析
开发语言·c++·算法
oioihoii10 小时前
C++11列表初始化:从入门到精通
java·开发语言·c++