#include<stdio.h>
#include<malloc.h>
int main()
{
printf("hello main\n");
int N = 1000;
int* p1 = (int*)malloc(N * sizeof(int));
int* p2 = p1;
//同一个内存地址只能free一次( free(p1);和free(p2); 二者选一执行,不能同时执行,否则报错 )
//free(p1);
free(p2);
//释放后的内存为可再分配给其他指针的内存,
//(1)若此时没有再分配给其他指针,原指针处的内容不变
//(2)若分配给了其他指针,原指针处的内容会改变
//因此,释放内存后的指针变为野指针, 不能再使用,需要指向NULL
p1 = NULL;
p2 = NULL;
printf("goodbye main\n");
return 0;
}
若两个free同时执行,程序执行不下去,报错结果如下: