内存碎片@ boost :: asio?

时间:2010-05-31 11:11:52

标签: memory boost-asio fragmentation

我几乎坚持一个我从来没有得到答案的问题,这是一个解决极其重要问题的问题; {:: 3}}在boost :: asio。

在文档中没有找到任何内容,也没有在此处找到。

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

相关问题