比如有一个
int* p
的指针,申请内存:p = (int*)malloc(sizeof(int));
你就可以对 p 做这样的操作:*p = 54;
使用
free(p);
那么就是切断了 p 对所分配内存的使用权,也就是说其他
是可以使用这块内存的。但是 p 保存的地址仍然存在,你再*p = 55;
这样操作,必定会造成非法访问,因为 p 失去了对保存的地址的使用权。如果没有
free(p);
,那么指针 p 所申请的内存,将不会被其他人使用。
当你做了p = NULL;
这个操作,只是你所写的整个代码程序占用了这块由 指针 p 所申请的内存,导致了你不再使用这块内存,别人也无法使用这块内存,造成内存泄漏。使用
free(p);
释放内存后, p 这个指针变量仍然可以使用,重新给指针 p 一个新地址(注意:这是赋值一个新地址) 或 重新为指针 p 申请一块内存。
版权声明:本文为qq_52304908原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。