⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_43793.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:43793 发表者:丁伟锋 发表日期:2003-06-13 21:32:35
<br>主题:请大家来解读一下这个函数。
<br>内容:我在一个程序里读到有这么一个函数。这个函数最终到底分配了多少内存。有高手可以解读一下吗?还有一点不明白作者为什么要这样来分配内存,有什么原因吗?谢谢。<BR>static void *alloc(int n) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;static char *avail, *limit;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;n = (n + sizeof(char *) - 1)&amp;~(sizeof(char *) - 1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (n &gt;= limit - avail) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avail = malloc(n + 4*1024);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(avail);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limit = avail + n + 4*1024;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;avail += n;<BR>&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;static char *avail, *limit;<BR>表明这个函数会在某种条件下做第一次调用,这样才能初始化:&nbsp;&nbsp;*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)&amp;~(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 &gt;= 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 + -