理解自由的概念

Sta*_*123 5 c memory allocation

试过以下代码:

#include<stdio.h>
int main()
{        
        int *p,*q;
        p = (int *)malloc(sizeof(int));
        *p =10;
        q = p;
        printf("%u \n",p);
        printf("%u \n",q);
        free(p);
        printf("%u \n",p);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

得到的输出如下:

[root@lnxdesk Tazim]# ./a.out
154804232
154804232
154804232
Run Code Online (Sandbox Code Playgroud)

为什么即使我已经完成了p中的地址仍然打印free(p);?那么free(p)做了什么?

我想清楚地理解free/malloc的概念.任何帮助都是有价值的.

MBy*_*ByD 5

free()只释放堆上的内存.它不会更改指针的值.如果你试图打印指针指向的内存,你可能会得到某种垃圾.

此外,当你打电话时free,你给它指针,而不是指针的地址,所以free不能改变你的指针......