内存池的实现,求助

mervynhit 2011-08-25 09:11:57
最近在想内存池的问题,有些问题不懂,想问一下。

比如一个内存池只分配一个类的内存,所以我们知道一个对象的内存大小,用内存池我们可以一次分配多个对象的内存。

用这个内存池释放一个对象内存的时候,是不是这个对象没有被删除,而只是把这个对象初始化,并且记录这个对象的指针,把它放到废弃内存的数组里面去。而用内存池分配内存的时候是从废弃内存中找到一个指针返回,而这个指针指向的是废弃的已被初始化的对象?
...全文
154 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
turing-complete 2011-08-26
  • 打赏
  • 举报
回复
学习池的思想,应该能提高很多效率
alexmayer 2011-08-26
  • 打赏
  • 举报
回复
Mark党到此一游!
luciferisnotsatan 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 freezezdj 的回复:]

STL 源码剖析
里有一个内存池,楼主可以好好看,剖析的很到位。
再 Google 侯捷 《池内春秋》。
[/Quote]
++
冻结 2011-08-25
  • 打赏
  • 举报
回复
STL 源码剖析
里有一个内存池,楼主可以好好看,剖析的很到位。
再 Google 侯捷 《池内春秋》。
mervynhit 2011-08-25
  • 打赏
  • 举报
回复
原来是这样~~~
xubin_sh 2011-08-25
  • 打赏
  • 举报
回复
不是,内存分配释放和对象构造析构不是一个事情
你可以google一下“replacement new”
他可以在一个已有的内存块上调用构造函数
// 申请内存
void * p = malloc(...);
// 构造对象
A *a = new(p)A(...);
// 析构对象
a->~A();
// 释放内存
free(p);

另外,boost::pool有内存池的实现,你可以参考一下

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧