book@100ask:~/C_coding/CH02$ cat malloc.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p = NULL;
p = malloc(sizeof(int));
if(p == NULL)
{
printf("malloc() error\n");
exit(1);
}
*p = 10;
printf("%p-->%d\n",p,*p);
free(p);
*p = 123;
printf("%p-->%d\n",p,*p);
exit(0);
}
book@100ask:~/C_coding/CH02$ make malloc
cc malloc.c -o malloc
book@100ask:~/C_coding/CH02$ ./malloc
0x563061a3c260-->10
0x563061a3c2f2-->123 //由于p已经被释放,此处为典型的野指针
book@100ask:~/C_coding/CH02$ cat malloc.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p = NULL;
p = malloc(sizeof(int));
if(p == NULL)
{
printf("malloc() error\n");
exit(1);
}
*p = 10;
printf("%p-->%d\n",p,*p);
free(p); //表示不再有对p的操作权限,free之后,建议马上赋值为空指针
int *p = NULL; //此处应该有意识的,在依次指针释放,下次指针使用前,先把指针指向空
*p = 123;
printf("%p-->%d\n",p,*p);
exit(0);
}
book@100ask:~/C_coding/CH02$ make malloc
cc malloc.