| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
学习型 ASP/PHP/ASP.NET 主机 35元/年全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
赛孚耐:软件保护加密专家身份认证令牌USB KEY虚拟主机 域名注册 主机托管 
共有 4028 人关注过本帖
标题:[求助]关于free函数
收藏  推荐  打印 
乌鸦丘比特
Rank: 4
等级:高级会员
威望:2
帖子:625
积分:6500
注册:2004-7-19
结帖率:0/0
  问题点数:0  回复次数:54   
[求助]关于free函数

我个人觉得free不像个函数,更像个宏,否则怎么不告诉它free空间的大小它就知道,也太神奇了。
free函数究竟是个什么东西,free一下多少空间究竟由什么决定,WHO知道可否告诉我。
搜索更多相关主题的帖子: free  函数  
2006-8-3 09:07
baidu
Rank: 8Rank: 8
等级:论坛元老
威望:8
帖子:3812
积分:37646
注册:2005-11-4
  得分:0 

free 多少空间由malloc决定,在malloc时相关信息其中包括长度都已建立,malloc并不仅仅分配你所指定的大小的内存,还建立一系相关的数据

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-8-3 09:31
SunShining
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:31
帖子:2215
积分:22350
注册:2006-2-17
  得分:0 

那为什么 free 也可以释放不用malloc分配的内存呢.

难道编译器在定义数组的时候也是利用malloc来分配内存吗?


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www.chinaren.com/chinaren.swf[/FLASH]
2006-8-3 09:41
baidu
Rank: 8Rank: 8
等级:论坛元老
威望:8
帖子:3812
积分:37646
注册:2005-11-4
  得分:0 

以下是引用SunShining在2006-8-3 9:41:23的发言:

那为什么 free 也可以释放不用malloc分配的内存呢.

难道编译器在定义数组的时候也是利用malloc来分配内存吗?

噢?举个例子


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-8-3 09:46
SunShining
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:31
帖子:2215
积分:22350
注册:2006-2-17
  得分:0 

TC下.

include<stdio.h>
include<malloc.h>
int main()
{
char a[]="12345";
free(a);
puts(a);
getch();
}


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www.chinaren.com/chinaren.swf[/FLASH]
2006-8-3 09:52
SunShining
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:31
帖子:2215
积分:22350
注册:2006-2-17
  得分:0 

只有在TC下可以


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www.chinaren.com/chinaren.swf[/FLASH]
2006-8-3 09:56
lj_860603
Rank: 4
等级:高级会员
威望:6
帖子:714
积分:7390
注册:2006-1-25
  得分:0 

Sun,你这个程序不是吧??free()似乎什么也没有做。

free和malloc应该是配对存在的。

我的原则很简单:不做不喜欢的事!
2006-8-3 09:56
SunShining
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:31
帖子:2215
积分:22350
注册:2006-2-17
  得分:0 

虽然我不太清楚它做了什么

不过在TC下肯定做事情了...


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www.chinaren.com/chinaren.swf[/FLASH]
2006-8-3 09:58
baidu
Rank: 8Rank: 8
等级:论坛元老
威望:8
帖子:3812
积分:37646
注册:2005-11-4
  得分:0 

以下是引用SunShining在2006-8-3 9:58:39的发言:

虽然我不太清楚它做了什么

不过在TC下肯定做事情了...

做了错事


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-8-3 09:59
SunShining
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:31
帖子:2215
积分:22350
注册:2006-2-17
  得分:0 

..好象是.TC下是以外终止了.
不过在别的编译器上就是若无其事的样子了

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www.chinaren.com/chinaren.swf[/FLASH]
2006-8-3 10:01
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.048065 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved