【发布时间】:2012-03-22 02:33:31
【问题描述】:
boost::asio::streambuf b;
...
void handler(const boost::system::error_code& e, std::size_t size)
{
if (!e)
{
std::stringstream sstr(std::string((std::istreambuf_iterator<char>(&b)),
std::istreambuf_iterator<char>()));
b.consume(size);
...
}
}
...
boost::asio::async_read_until(s, b, "END\r\n", handler);
consume方法被调用时,streambuf b占用的内存并没有被释放。内存将随着async_read_until 被多次调用而增长。我的用法正确吗?有什么办法可以释放streambuf的the get pointer之前的内存吗?
【问题讨论】:
-
很可能,您实际上是在释放它。由于碎片等原因,内存会增长,然后在经历峰值负载后开始趋于平稳。
标签: c++ boost boost-asio streambuf