回 帖 发 新 帖 刷新版面

主题:Free()有作用么?

char *p;char a[]="hello"  p=a; printf("p_address: %x\n",p);
char *p; char a[]="hello" p=a; free(p);printf("p_address: %x\n",p);
这两个结果是相同的。。怎么才能释放掉。释放掉的结果应该是什么

回复列表 (共2个回复)

沙发

看了你的问题,建议你参考C语言中有关内存分配的部分,和字符串的相关章节。如下代码能够说明一些问题,仅供你参考,希望有帮助。
char *p; 
char a[]="hello"; 
printf("p_address: %x\n",p); 
p=(char*)malloc(6*sizeof(char));
memcpy(p, a, 6);
printf("p_address: %x\n",p);
free(p);//通常不会影响p的值,而是释放p指向的空间。
printf("p_address: %x\n",p);

板凳

打个比方吧 
就是你(数据),电脑(旅店老板)给你开了个房间(内存),当你退房间(内存)的时候就要free()了,用电脑术语就是释放内存空间,

我来回复

您尚未登录,请登录后再回复。点此登录或注册