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

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

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

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

应该这样改:

相关推荐
忧郁的蛋~2 分钟前
JavaScript性能优化的12种方式
开发语言·javascript·性能优化
人工智能研究所4 分钟前
使用OpenCV与Python编写自己的俄罗斯方块小游戏
开发语言·python·opencv
DDD小小小宇宙4 分钟前
python列表基础知识
开发语言·windows·python
海盗强6 分钟前
prototype和proto的区别
开发语言·javascript·原型模式
哥谭居民000126 分钟前
mybatis注册一个自定义拦截器,拦截器用于自动填充字段
java·开发语言·jvm·mybatis
钟离墨笺35 分钟前
【c++】【智能指针】什么情况下不适合智能指针
开发语言·c++
moz与京1 小时前
【记】如何理解kotlin中的委托属性?
android·开发语言·kotlin
左少华1 小时前
Kotlin-inline函数特效
android·开发语言·kotlin
懒大王爱吃狼1 小时前
Python + Qt Designer构建多界面GUI应用程序:Python如何调用多个界面文件
开发语言·数据库·python·qt·mysql·python基础·命令模式
平谷一勺1 小时前
golang中的结构体
开发语言·后端·golang·序列化·结构体·结构体嵌套·匿名结构体嵌套