4
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
之前有什么方法可以释放内存吗?boost asio streambuf在调用消耗后不释放内存?
抱歉,错字:) – user869210 2012-03-04 06:20:47
最有可能的是,你实际上已经释放它。内存将因碎片等原因而增长,一旦遇到高峰负载,内存就会开始平衡。 – 2012-03-04 06:23:35