免费注册 查看新帖 |

Chinaunix

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

两种开辟空间的方法在时间上有差别么? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2005-03-03 22:41 |只看该作者

两种开辟空间的方法在时间上有差别么?

to longbegue;
MALLOC分配的空间,在VM空间里是连续的,无论采用什么分配算法,都会存在碎片的问题,通常应用不会去关心这问题,因为HEAP的空间OS会反向回收合并的,但是,比如象这种情况下:
PROCESS已经分配了12个10M(M1~M12表示)的空间,ASSUME HEAP还有100M的空间余地,那么,问题来了:
如果你释放顺序是(M1~M11),但是M12没有释放的话,那么HEAP里面会有2块,一个110M,另一个100M,这时候你要申请200M的空间的话,那是不可能的.
结论:在大HEAP管理的情况下:
1.FREE的顺序尽量和MALLOC的顺序相反;
2.如果要自己实现BUFFER POOL管理,应该尽可能早分配这一空间,否则系统运行情况会不可预测.
--P.S普通应用不用考虑这样的问题.

论坛徽章:
0
32 [报告]
发表于 2005-03-04 10:54 |只看该作者

两种开辟空间的方法在时间上有差别么?

原帖由 "albcamus" 发表:
木木兄先把问题描述清楚些吧

malloc会多消耗一些运行时间,数组会浪费掉一些空间。而且有时数组的size是无法在编码时就知道的。我觉得malloc应该没问题。

.......


malloc会多消耗一些运行时间,数组会浪费掉一些空间。
YES。

论坛徽章:
0
33 [报告]
发表于 2005-03-04 19:28 |只看该作者

两种开辟空间的方法在时间上有差别么?

这两天一直麻烦大家,衷心感谢!
谢谢柳五随风!
还有aero斑竹,我在鞍山,离沈阳不远,希望咱们能有机会见面!

论坛徽章:
0
34 [报告]
发表于 2005-03-04 21:22 |只看该作者

两种开辟空间的方法在时间上有差别么?

柳五随风 :因为HEAP的空间OS会反向回收合并的
对这句话不太理解 劳驾能不能说的解释一下
我看C programming language 中的模拟malloc和free的代码中
回收并合并空间都是在free函数中实现的 跟OS关系不大

论坛徽章:
0
35 [报告]
发表于 2005-03-04 22:46 |只看该作者

两种开辟空间的方法在时间上有差别么?

FREE是会回收空间的,但是也只是向低端回收相邻的空间(合并),并不处理高端的空间(不重新构造).

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
36 [报告]
发表于 2005-03-05 11:20 |只看该作者

两种开辟空间的方法在时间上有差别么?

原帖由 "longbegue" 发表:
这两天一直麻烦大家,衷心感谢!
谢谢柳五随风!
还有aero斑竹,我在鞍山,离沈阳不远,希望咱们能有机会见面!


   好啊。

论坛徽章:
0
37 [报告]
发表于 2005-03-05 13:15 |只看该作者

两种开辟空间的方法在时间上有差别么?

我发现用C惯了的都写:
char *cp;
cp = big_buf;

而用C++的都写:
char *cp = big_buf;

请问这两种写法哪种更好?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
38 [报告]
发表于 2005-03-05 13:17 |只看该作者

两种开辟空间的方法在时间上有差别么?

原帖由 "linfeng12" 发表:
我发现用C惯了的都写:
char *cp;
cp = big_buf;

而用C++的都写:
char *cp = big_buf;

请问这两种写法哪种更好?


没有这个规律吧?个人的习惯而已。

论坛徽章:
0
39 [报告]
发表于 2005-03-06 10:16 |只看该作者

两种开辟空间的方法在时间上有差别么?

"并不处理高端的空间(不重新构造)."
呵呵 这句话还是不太明白 能否详细解释一下
我是头一次碰到OS管理HEAP的说法 以往一直以为就是库函数管理的
主流的OS都有支持嘛
又没有这方面的文档?

论坛徽章:
0
40 [报告]
发表于 2005-03-07 08:45 |只看该作者

两种开辟空间的方法在时间上有差别么?

如果是一次malloc永久使用(就和全局数组那样),那么大内存(几十M---几百M)malloc和全局数组的速度没什么大差别。

小内存时应避免不停分配释放。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP