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

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

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

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

应该这样改:

相关推荐
韩立学长31 分钟前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
froginwe111 小时前
Scala 循环
开发语言
m0_706653231 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你911 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Bruk.Liu1 小时前
(LangChain实战2):LangChain消息(message)的使用
开发语言·langchain
qq_423233902 小时前
C++与Python混合编程实战
开发语言·c++·算法
m0_715575342 小时前
分布式任务调度系统
开发语言·c++·算法
csbysj20202 小时前
选择(Selectable)
开发语言
naruto_lnq2 小时前
泛型编程与STL设计思想
开发语言·c++·算法
:Concerto2 小时前
JavaSE 注解
java·开发语言·sprint