【发布时间】:2013-03-28 17:33:43
【问题描述】:
我从 RTOS 分配了一个大内存池(我已经知道我的应用程序内存需求,它不会超过一定大小)。然后我的应用程序分配请求从该池中得到满足。
最近我开始遇到一个问题;即使内存在那里,分配请求也没有得到满足(有集成的内存基准标记框架,这表明了这一点),调查显示我们正遭受内存碎片的困扰。
我的应用程序严重依赖 STL(也从网络接收数据、XML 解析、图像处理、将其保存为 PNG 等),以及内存碎片背后的堆内存分配(还有其他原因吗?),什么是最好的有办法避免吗?
【问题讨论】:
-
给猫剥皮的方法有很多。但是,您的池分配器真的比默认的
new/delete更好吗? -
实现自己的子分配器的程序员通常最终会成为乌普萨拉的朝圣者。对分配大小进行四舍五入可能是一个 Q&D 解决方法。
-
@Clifford,感谢更新。
标签: c++ memory-management rtos memory-fragmentation