我几乎坚持一个我从来没有得到答案的问题,这是一个解决极其重要问题的问题; {:: 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结构
我怀疑这就是我有上述小额分配的原因,他让我担心内存碎片问题
那么如何汇集这些课程呢?当然,平台无关。
有什么想法吗?任何有用的代码示例?我相信你们中的一些人已经解决了这个问题。