免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4401 | 回复: 11
打印 上一主题 下一主题

如何在共享内存中存放不定大小的对象 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-27 10:45 |只看该作者 |倒序浏览
如果要在共享内存中存放不定大小的对象,如何操作比较好?

如果需要自己管理共享内存中空间的分配和回收,采用何种方式比较好呢?

论坛徽章:
0
2 [报告]
发表于 2009-05-27 10:57 |只看该作者
realloc

论坛徽章:
0
3 [报告]
发表于 2009-05-27 10:59 |只看该作者

回复 #2 prolj 的帖子

没明白
明示吧

论坛徽章:
0
4 [报告]
发表于 2009-05-27 14:04 |只看该作者
看《数据结构》 一书中关于内存管理的那一章节

论坛徽章:
0
5 [报告]
发表于 2009-05-27 15:17 |只看该作者

回复 #4 anthony1983 的帖子

额 莫不是要伙伴系统  

还有其他的方法么

比如,对每一个对象动态开辟一小块共享内存,用完后释放,而不是在初始化的时候开辟一块儿足够大的再在其中分配。这样可行不?

论坛徽章:
0
6 [报告]
发表于 2009-05-27 16:02 |只看该作者
原帖由 michaelwang23 于 2009-5-27 15:17 发表
额 莫不是要伙伴系统  

还有其他的方法么

比如,对每一个对象动态开辟一小块共享内存,用完后释放,而不是在初始化的时候开辟一块儿足够大的再在其中分配。这样可行不?



共享数据就行了吧,共享对象干什么

随时用随时分配也是可以做到得,用共享内存+锁 来保证同步

论坛徽章:
0
7 [报告]
发表于 2009-05-27 16:38 |只看该作者

回复 #6 anthony1983 的帖子

方法1:
事先申请一块足够大的共享内存块
对于不同长度的字符串在这块空间内分配空间
这需要内存管理 实现可能比较复杂

方法2:
对于一个长度为6字节的字符串,开辟一个适当大小的共享内存块
对于另一个长度为600字节的字符串,再开辟一个适当大小的内存块
对于不同长度的字符串 开辟不同大小的共享内存块
这样实现起来可能会简单一些
但是,这种频繁的申请、释放共享内存会不会有什么不良影响

论坛徽章:
0
8 [报告]
发表于 2009-05-27 16:46 |只看该作者

回复 #7 michaelwang23 的帖子

方法2,性能会有影响的
申请共享内存,比直接new,要慢。

论坛徽章:
0
9 [报告]
发表于 2009-05-27 16:50 |只看该作者

回复 #8 anthony1983 的帖子

除了性能,还有没有其他影响 ,比如:在删除时

论坛徽章:
0
10 [报告]
发表于 2009-05-27 16:56 |只看该作者

回复 #9 michaelwang23 的帖子

删除会有什么影响?? 调用munmap 释放就是了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP