c语言内存分配

来源:互联网 发布:法学网络课程 编辑:程序博客网 时间:2024/05/25 19:57

《c语言深度剖析》中关于内存管理部分的测试,可以很好的加深理解。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


int main()
{
char *pstr = NULL;
char *pstr2 = NULL;


pstr = (char *)malloc(36);
strcpy(pstr,"hello world");
free(pstr);


pstr2 = (char *)malloc(0);
if(NULL != pstr2)
printf("%p \r\n",pstr2);
/*
if(NULL != pstr)
strcpy(pstr,"abchdhh");
*/


return 0;
}

通过调试发现 free 之后,pstr 仍然保持不变,但是其指向的内存已经不是 "hello world".

free 只是切断了 pstr 和它所指向内存的关系,即释放了内存,这时如果再使用 pstr 匿名操作对应内存将会发生意想不到的结果。

还有申请 0 个字节,不会返回 NULL。

0 0
原创粉丝点击