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.