内存碎片@ boost :: asio?

Pon*_*oni 5 memory fragmentation boost-asio

我几乎坚持一个我从来没有得到答案的问题,一个解决一个极其重要问题的问题; boost :: asio中的内存碎片.

在文档中也没有找到任何内容,也没有在SO

boost :: asio中的异步函数,例如async_write()和async_read_some()总是会分配一些东西.(在我的例子中,它分别是144和96字节,在VC9 Debug版本中).

我怎么知道呢?
我将客户端连接到此库提供的"echo server"示例.
我在"new.cpp"的代码"new new(size_t size)"处设置了一个断点.
然后我发送"123".断点被击中了!
现在使用堆栈跟踪我可以清楚地看到"新"调用的根来自我在函数处理程序中进行的async_write()和async_read_some()调用.

所以内存碎片迟早会出现,因此我不能使用ASIO,我希望我能!

我想要指出,我理解异步操作至少在IOCP上需要在操作期间使用分配的结构,直到完成(调用处理程序时).
例如,对于IOCP,每个操作(读/写)必须具有OVERLAPPED结构.
我怀疑这就是我有上述小额分配的原因,他让我担心内存碎片问题.
那么如何汇集这些课程呢?当然,平台无关.

任何的想法?任何有用的代码示例?我相信你们中的一些人已经解决了这个问题.

Sam*_*ler 3

听起来你需要使用 asio 自定义内存分配功能,你读过文档吗?还有一个相当简单的例子