c语言中free函数释放内存后,会怎么样?

  1. 比如有一个 int* p 的指针,申请内存: p = (int*)malloc(sizeof(int));
    你就可以对 p 做这样的操作:*p = 54;

  2. 使用 free(p);那么就是切断了 p 对所分配内存的使用权,也就是说其他
    是可以使用这块内存的。但是 p 保存的地址仍然存在,你再 *p = 55; 这样操作,必定会造成非法访问,因为 p 失去了对保存的地址的使用权。

  3. 如果没有 free(p); ,那么指针 p 所申请的内存,将不会被其他人使用。
    当你做了 p = NULL; 这个操作,只是你所写的整个代码程序占用了这块由 指针 p 所申请的内存,导致了你不再使用这块内存,别人也无法使用这块内存,造成内存泄漏。

  4. 使用 free(p); 释放内存后, p 这个指针变量仍然可以使用,重新给指针 p 一个新地址(注意:这是赋值一个地址) 或 重新为指针 p 申请一块内存。


版权声明:本文为qq_52304908原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。