Sp我的功能如下:
void WriteToUrl(const unsigned char *buf, int size)
{
boost::asio::write(s, boost::asio::buffer(buf, size));
}
如果我不在其他任何地方使用缓冲区,是否需要删除缓冲区? y函数后如何清理?
答案 0 :(得分:4)
如果我理解你总是拥有缓冲区'buf'。使用同步操作,如:: write,您可以在:: write完成后立即删除缓冲区。对于异步操作,如:: async_write,您需要提供一个异步完成标记(回调),该标记将在操作完成时调用。您可以删除此回调中的buf。
答案 1 :(得分:2)
即使您愿意,也没有指向可以删除的缓冲区的指针。
来自buf
的输入数据用于构造Boost.Asio buffer
,然后该构造中使用的内存由库管理。写入调用阻塞,直到写入所有数据,因此我想数据不会在内部复制(但我不确定)。
当你完成它时,你当然应该对你给构造函数(buf
)的缓冲区执行任何必要的清理。