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的概念.任何帮助都是有价值的.
free()只释放堆上的内存.它不会更改指针的值.如果你试图打印指针指向的内存,你可能会得到某种垃圾.
此外,当你打电话时free,你给它指针,而不是指针的地址,所以free不能改变你的指针......
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |