标题:[求助]关于free函数
只看楼主
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
得分:0 
以下是引用frenn在2006-8-4 16:28:35的发言:

asdfd
0.
asdfd
Press any key to continue
你们在什么环境下运行的?我用vc++6.0运行时在第一个free处程序就出错了:
终止(A) 重试(R) 忽略(I)

也就是说free(void *p)里的参数只能是申请时返回的指针了。

XP+ c-free 3.5


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-08-04 16:58
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
得分:0 
以下是引用lj_860603在2006-8-4 16:29:56的发言:

偶GOOGLE了很久,就是没有一篇专门详细深入介绍malloc()和free()机制文章。偶自己准备总结一篇。

不过偶现在对这个问题已经有了进一层的理解,万岁!

期待.....


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-08-04 16:59
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
得分:0 
以下是引用baidu在2006-8-4 16:59:02的发言:

期待.....

汗一个。。。
不要给偶压力!
偶本来只是想自己随便小结一下而已,这样被你这两个字。。。

这些日子在看《UNIX环境高级编程》,刚无意看到一章里面有谈到这个方面的内容,不过也谈得不怎么多。


我的原则很简单:不做不喜欢的事!
2006-08-04 17:32
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
得分:0 

明白了,之前就是不知道malloc的时候已经存下内存空间大小的信息。就一直认为free应该要指定free内存的大小。至于为什么认为free是宏是这么想的,如果有某函数V_free(void *p,size_t n),后面参数n指定了free的内存空间大小
那就#define free(p) V_free(p,sizeof(*p))
当然这种想法很幼稚。不过穆扬说我搞不清楚函数和宏的关系倒真是冤枉我了


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2006-08-04 18:56
pulf
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2006-7-31
得分:0 
帮你顶一下

2006-08-04 23:32
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
得分:0 
以下是引用SunShining在2006-8-3 09:52:53的发言:

TC下.

include<stdio.h>
include<malloc.h>
int main()
{
   char a[]="12345";
   free(a);
   puts(a);
   getch();
}
你这样写的时候,a是在栈上的。是无须释放的,因为栈是自动管理的。
当离开函数的时候会通过恢复ESP来“释放”函数中用到的临时变量等。

my tech blog: /hoodlum1980
2011-04-02 06:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-81781-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.492314 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved