📄 subject_43793.htm
字号:
<p>
序号:43793 发表者:丁伟锋 发表日期:2003-06-13 21:32:35
<br>主题:请大家来解读一下这个函数。
<br>内容:我在一个程序里读到有这么一个函数。这个函数最终到底分配了多少内存。有高手可以解读一下吗?还有一点不明白作者为什么要这样来分配内存,有什么原因吗?谢谢。<BR>static void *alloc(int n) {<BR> static char *avail, *limit;<BR> <BR> n = (n + sizeof(char *) - 1)&~(sizeof(char *) - 1);<BR> if (n >= limit - avail) {<BR> avail = malloc(n + 4*1024);<BR> assert(avail);<BR> limit = avail + n + 4*1024;<BR> }<BR> avail += n;<BR> return avail - n;<BR>}<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:许仙 回复日期:2003-06-13 21:48:06
<br>内容:看这个是没有意义的.<BR>写的人蠢,看的人嘛,就更XXXXX<BR><BR><BR>而且还有,<BR> static char *avail, *limit;<BR>表明这个函数会在某种条件下做第一次调用,这样才能初始化: *avail, *limit;<BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:问号 回复日期:2003-06-13 21:57:35
<br>内容://n = (n + sizeof(char *) - 1)&~(sizeof(char *) - 1);<BR><BR>if( n % sizeof(char*) )<BR> n =(n/sizeof(char*)) * sizeof(char*) + 1<BR>else<BR> n; //不变<BR><BR>//if (n >= limit - avail) {<BR>意思是判断一下已经分批的空间用完没有<BR>// avail = malloc(n + 4*1024);<BR>如果不够就新的申请<BR><BR>// limit = avail + n + 4*1024;<BR>保存新的结束地址<BR><BR>....<BR><BR><BR>///修改, 笔误, 多了一个等号<BR><BR><BR><BR>2003-6-13 22:06:17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -