免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3404 | 回复: 15

探讨一下,有没有完全使用静态内存的stl版本呢? [复制链接]

论坛徽章:
0
发表于 2007-12-19 13:10 |显示全部楼层
貌似很有用啊

论坛徽章:
0
发表于 2007-12-19 13:18 |显示全部楼层

为啥有这个念头?

BTW:可以自己写一个allocator传进模板参数中,理论上可以做到你想要做的.

论坛徽章:
0
发表于 2007-12-19 13:41 |显示全部楼层
原帖由 converse 于 2007-12-19 13:18 发表

为啥有这个念头?

BTW:可以自己写一个allocator传进模板参数中,理论上可以做到你想要做的.


因为偶做嵌入式
自己写allocator的确是一种办法,缺点还有一点:
最好能根据用户给出的最大配置,预估每个对象将使用的最大内存。
是不是每个stl对象,都可以加一个static evaluate_memory(...),用于告诉这个对象使用中,最多会用多少memory,
这样对内存要求严格的场合,就有救了。

论坛徽章:
0
发表于 2007-12-19 17:09 |显示全部楼层

回复 #1 飞灰橙 的帖子

使用静态内存?有什么好处?

论坛徽章:
0
发表于 2007-12-19 17:25 |显示全部楼层
原帖由 mailt 于 2007-12-19 17:09 发表
使用静态内存?有什么好处?


在小内存,又没虚拟内存管理的场合,动态内存太不稳定了。
碎片和内存不足,简直无孔不入。
所以使用静态内存,事先把要使用的内存预估好,这样即使发现内存不够,也有个精确的说法,才能理直气壮地为产品增加内存数量。

论坛徽章:
0
发表于 2007-12-19 17:28 |显示全部楼层

回复 #4 mailt 的帖子

其实就是原来由OS给你管理内存,现在自个儿做这个事情,可控性强了但是自己要做的事情也多了.

论坛徽章:
0
发表于 2007-12-19 20:59 |显示全部楼层
原帖由 飞灰橙 于 2007-12-19 17:25 发表


在小内存,又没虚拟内存管理的场合,动态内存太不稳定了。
碎片和内存不足,简直无孔不入。
所以使用静态内存,事先把要使用的内存预估好,这样即使发现内存不够,也有个精确的说法,才能理直气壮地为产品 ...


我觉得sgi stl自带的那个内存管理器就挺好的,唯一不好的地方就是分配小内存的时候会存在比较大的浪费。我感觉你调整一下那个管理器的参数就很可能适合你用了。

论坛徽章:
0
发表于 2007-12-19 21:49 |显示全部楼层
原帖由 飞灰橙 于 2007-12-19 13:41 发表


因为偶做嵌入式
自己写allocator的确是一种办法,缺点还有一点:
最好能根据用户给出的最大配置,预估每个对象将使用的最大内存。
是不是每个stl对象,都可以加一个static evaluate_memory(...),用于告 ...


实现一个  memory pool, 让 allocator 在 memory pool 上分配好了.
www.codeguru.com 有个例子, 可做参考

[ 本帖最后由 jato 于 2007-12-19 21:50 编辑 ]

论坛徽章:
0
发表于 2007-12-19 22:21 |显示全部楼层
自己再去实现一遍,不见得就比标准的好

论坛徽章:
0
发表于 2007-12-19 22:22 |显示全部楼层
问题的实质与是否虚拟内存或静态内存没有关系。所谓"事先把要使用的内存预估好,这样即使发现内存不够,也有个精确的说法". 你怎么确定静态内存没有碎片。如果我知道程序的内存使用pattern,我会用custom allocator来减少碎片。但是用动态内存或静态内存效果一样。

有些memory allocator也可以在用户给定的buffer上作动态内存分配。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP