免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 浪琴人
打印 上一主题 下一主题

请教一个动态内存分配的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2004-10-27 23:37 |只看该作者

请教一个动态内存分配的问题

我试了试,没有内存泄漏啊.
用指针的指针在这个问题上应该不会造成内存泄漏的吧?

论坛徽章:
0
12 [报告]
发表于 2004-10-28 08:26 |只看该作者

请教一个动态内存分配的问题

编译器总是要为函数的每个参数制作临时副本,指针参数t1 的副本是 _t1,编译器使 _t1 = t1。如果函数体内的程序修改了_t1 的内容,就导致参数t1 的内容作相应的修改。这就是指针可以用作输出参数的原因。在这里,_t1 申请
了新的内存,只是把_t1 所指的内存地址改变了,但是t1丝毫未变。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
13 [报告]
发表于 2004-10-28 08:42 |只看该作者

请教一个动态内存分配的问题

原帖由 "assiss" 发表:
我试了试,没有内存泄漏啊.
用指针的指针在这个问题上应该不会造成内存泄漏的吧?


用二级指针不会。

论坛徽章:
0
14 [报告]
发表于 2004-10-28 08:54 |只看该作者

请教一个动态内存分配的问题

aero
好象realloc不改变原来已有内存的指针(数值)和和内容。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
15 [报告]
发表于 2004-10-28 09:01 |只看该作者

请教一个动态内存分配的问题

realloc() returns a pointer to the newly  allocated  memory,  which  is
       suitably  aligned  for  any  kind of variable and may be different from
       ptr, or NULL if the request fails. If size was equal to 0, either  NULL
       or a pointer suitable to be passed to free() is returned.  If realloc()
       fails the original block is left untouched - it is not freed or  moved.

这是man手册中的一段话,偶明显觉得它是:无法在内存块后面增大的时候(已经被别人占用了),删掉这块内存,另外开辟一块更大的内存,把这块内存中的前面部分复制过去。呵呵,具体也不太清楚。不过看man,好像多次提到了free。推测,里面也用到了free。
测试一下,如果不行。看来要看源码了。

论坛徽章:
0
16 [报告]
发表于 2004-10-28 09:28 |只看该作者

请教一个动态内存分配的问题

aero,你是正确的,我记错了。
仅仅保证内容不变,数值需要变时就变了。

论坛徽章:
0
17 [报告]
发表于 2004-10-28 12:34 |只看该作者

请教一个动态内存分配的问题

用指针的引用试一下,如果使用gcc,用指针的指针
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP