📄 subject_25808.htm
字号:
<p>
序号:25808 发表者:xiaoxin 发表日期:2002-12-25 23:12:45
<br>主题:如何释放内存?
<br>内容: struct pzy{<BR> int data;<BR> pzy *next;<BR> }*head,*p;<BR> head=(struct pzy*)malloc(sizeof(struct pzy*));<BR> free(head);//出错,不知如何释放此内存<BR> 。<BR> 。<BR> 。<BR> head=(struct pzy*)malloc(sizeof(struct pzy ));<BR> free(head);//正确<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>
<font color=red>答案被接受</font><br>回复者:xiongli 回复日期:2002-12-25 23:21:54
<br>内容:你第一个malloc(sizeof(struct pzy*));<BR>是要做什么??<BR>这个语句是分配sizeof(struct pzy*)这么多内存,也就是一个指针所需要的空间,而不是一个sturct需要的空间<BR><BR>第二个malloc(sizeof(struct pzy )是分配一个stuct需要的空间,返回一个pointer,注意是void*,然后转换成sturct pzy*,然后给head;<BR><BR>最后一个free,是释放一个指针指向的内存。你释放的是一个sturct pzy*,那么就因该包含sizeof(struct pzy)那么多内存,你说那个正确??<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>
回复者:songxinye 回复日期:2002-12-25 23:23:40
<br>内容:头一个,你只申请了 4个字节的内存,而要使用更多的,即使不释放也不对<BR>你申请的内存块的大小装不下这个结构,sizeof是在编译时计算出括号内数据<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>
回复者:xiaoxin 回复日期:2002-12-25 23:26:43
<br>内容:哪说明第一个定义就错了?要是分配时用第二个了,谢谢!!<BR>2002-12-25 23:31:27
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -