C语言中free()释放空间时报错

Posted 两片空白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中free()释放空间时报错相关的知识,希望对你有一定的参考价值。

今天再写用链表写一个线性表时,删除节点时free()释放空间时总是报错,报错信息如下:
在这里插入图片描述
经过一番查询得知,free()是你申请了多少空间,就释放多少空间,在申请时,已经将你申请空间的大小记录。当时如果你使用与你申请的空间不符,就会报错。(个人理解).
在我的代码中

struct Node{
	int data;
	struct Node* next;
};

typedef struct Node * List;

List Creatlist(int x){
	//List list = (List)malloc(sizeof(List));//错误,List 是指针,只有4字节空间
	List list = (List)malloc(sizeof(struct Node));//正确
	list->data = x;
	list->next = NULL;
	return list;
}

我这里只申请4字节空间,当时我使用时超过了4字节空间,所以会报错。

以上是关于C语言中free()释放空间时报错的主要内容,如果未能解决你的问题,请参考以下文章

C语言中free函数的用法

C语言free释放内存后为啥指针里的值不变?竟然还可以输出

C语言中free掉一段空间后为啥还要使用NULL

刨析《C语言》进阶付费知识完结

C语言学习笔记(16)动态内存管理

C语言进阶动态内存管理