在c语言中,通过malloc函数动态申请的内存空间,若申请成功,则会返回一个指向该内存地址的指针,如果申请失败,则会返回NULL;若不再使用,则用free函数释放掉该指针指向的内存。
malloc()函数的描述:void *malloc(size_t size) 分配所需的内存空间,并返回一个指向所开辟内存空间的指针。
测试一下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p=NULL;
p = (int*)malloc(sizeof(int));
*p = 10;
printf("%p,%d\n", p, *p);
free(p);
printf("%p,%d\n", p, *p);
return 0;
}
运行结果为:
可以看出,通过调用函数free()释放后,指向动态开辟地址的指针p还存在,并且仍指向原地址;但所指地址原来的内容10已经被free()释放掉了,现在是乱码了。
所以通常在调用free()函数后,需要将free后的指针指向NULL。