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