将它发送到boost :: asio :: buffer之后是否需要删除缓冲区?

时间:2010-12-06 15:46:35

标签: c++ boost char buffer

Sp我的功能如下:

void WriteToUrl(const unsigned char *buf, int size)
{
boost::asio::write(s, boost::asio::buffer(buf, size));
}

如果我不在其他任何地方使用缓冲区,是否需要删除缓冲区? y函数后如何清理?

2 个答案:

答案 0 :(得分:4)

如果我理解你总是拥有缓冲区'buf'。使用同步操作,如:: write,您可以在:: write完成后立即删除缓冲区。对于异步操作,如:: async_write,您需要提供一个异步完成标记(回调),该标记将在操作完成时调用。您可以删除此回调中的buf。

答案 1 :(得分:2)

即使您愿意,也没有指向可以删除的缓冲区的指针。

来自buf的输入数据用于构造Boost.Asio buffer,然后该构造中使用的内存由库管理。写入调用阻塞,直到写入所有数据,因此我想数据不会在内部复制(但我不确定)。

当你完成它时,你当然应该对你给构造函数(buf)的缓冲区执行任何必要的清理。