69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
main()
{
int *p = (int *)malloc(sizeof(int)); // p指向了一块区域
int *q = (int *)malloc(sizeof(int)); // q也指向了一块区域
*p = 123; // 向p指向的区域填123
q = p; // 现在q也指向了p指向的那块区域,q指向的那块区域没有了引用,传说中的memory leak
printf("%d\n",*p);
free(p); // p的那块区域不属于p了,尽管你指向那里,但是系统有权自行操作那块空间,你虽然可以搞那块空间,但是接下来就有可能搞死系统
printf("%d\n",*q);
}
#include <stdio.h>
main()
{
int *p = (int *)malloc(sizeof(int));
int *q = (int *)malloc(sizeof(int));
*p=123;
q = p; // p q指向同一地址
printf("%d\n",*p);
free(p); //释放p的同时,q也释放了
printf("%d\n",*q);//q变成了野指针
}