Chinaunix

标题: 如何在共享内存中存放不定大小的对象 [打印本页]

作者: michaelwang23    时间: 2009-05-27 10:45
标题: 如何在共享内存中存放不定大小的对象
如果要在共享内存中存放不定大小的对象,如何操作比较好?

如果需要自己管理共享内存中空间的分配和回收,采用何种方式比较好呢?
作者: prolj    时间: 2009-05-27 10:57
realloc
作者: michaelwang23    时间: 2009-05-27 10:59
标题: 回复 #2 prolj 的帖子
没明白
明示吧
作者: anthony1983    时间: 2009-05-27 14:04
看《数据结构》 一书中关于内存管理的那一章节
作者: michaelwang23    时间: 2009-05-27 15:17
标题: 回复 #4 anthony1983 的帖子
额 莫不是要伙伴系统  

还有其他的方法么

比如,对每一个对象动态开辟一小块共享内存,用完后释放,而不是在初始化的时候开辟一块儿足够大的再在其中分配。这样可行不?
作者: anthony1983    时间: 2009-05-27 16:02
原帖由 michaelwang23 于 2009-5-27 15:17 发表
额 莫不是要伙伴系统  

还有其他的方法么

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



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

随时用随时分配也是可以做到得,用共享内存+锁 来保证同步
作者: michaelwang23    时间: 2009-05-27 16:38
标题: 回复 #6 anthony1983 的帖子
方法1:
事先申请一块足够大的共享内存块
对于不同长度的字符串在这块空间内分配空间
这需要内存管理 实现可能比较复杂

方法2:
对于一个长度为6字节的字符串,开辟一个适当大小的共享内存块
对于另一个长度为600字节的字符串,再开辟一个适当大小的内存块
对于不同长度的字符串 开辟不同大小的共享内存块
这样实现起来可能会简单一些
但是,这种频繁的申请、释放共享内存会不会有什么不良影响
作者: anthony1983    时间: 2009-05-27 16:46
标题: 回复 #7 michaelwang23 的帖子
方法2,性能会有影响的
申请共享内存,比直接new,要慢。
作者: michaelwang23    时间: 2009-05-27 16:50
标题: 回复 #8 anthony1983 的帖子
除了性能,还有没有其他影响 ,比如:在删除时
作者: anthony1983    时间: 2009-05-27 16:56
标题: 回复 #9 michaelwang23 的帖子
删除会有什么影响?? 调用munmap 释放就是了
作者: michaelwang23    时间: 2009-05-27 16:58
标题: 回复 #10 anthony1983 的帖子
如果是System V IPC呢
作者: anthony1983    时间: 2009-05-27 17:05
原帖由 michaelwang23 于 2009-5-27 16:58 发表
如果是System V IPC呢


也类似啊,不过记得做好多进程间的同步就行了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2