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

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

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

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

应该这样改:

相关推荐
深邃-5 分钟前
字符函数和字符串函数(1)
c语言·开发语言·数据结构·c++·算法·html5
初中就开始混世的大魔王5 分钟前
3.1 DDS 层-Core
开发语言·c++·网络协议·tcp/ip·信息与通信
曹牧15 分钟前
JDK 1.6 ,无法通过安全套接字层(SSL/TLS)加密建立数据库安全连接
java·开发语言·ssl
星夜夏空9930 分钟前
搭建内存池2.0
c语言
电商API_1800790524731 分钟前
API分享:获取淘宝商品价格|详情|主图|sku信息
开发语言·c++·人工智能·数据分析
一定要AK35 分钟前
java基础
java·开发语言·笔记
splage42 分钟前
Java进阶之泛型
java·开发语言
xiaohe0744 分钟前
JAVA系统中Spring Boot 应用程序的配置文件:application.yml
java·开发语言·spring boot
羊小蜜.1 小时前
C++17: map & multimap—— 键值映射容器
开发语言·c++·stl
Eternity_GQM1 小时前
【CMake入门】
java·开发语言