C語言基礎 -58 動態內存分配_free的使用及微型學生管理系統代碼重構

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.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章