需要头文件——<stdlib.h>
free函数(释放动态开辟的内存):
void* free(void* ptr);
功能:
- 如果参数ptr指向的那个空间不是动态开辟的,那free函数的行为是未定义的。
- 如果参数ptr是NULL指针,则函数什么事都不做。
注意:将空间释放后指针其实还指向的是原来的空间,只是内部存储的数据全部释放了,所以为了防止形成野指针,要在free的后面讲指针赋为空。如下:
free(ptr); // 把开辟在堆上的空间释放掉
ptr = NULL; // 让ptr指向空
当然释放过的空间不能重复释放
这样是会报错的,不能重复释放一个已经释放的空间:
free( p);
free( p);
free( p);
但是下面这样是可以的,将指针所指的地址变为空:
free( p);
p=NULL;
free( p);