【发布时间】:2019-10-19 06:43:38
【问题描述】:
uv_write 的文档指出 [1]:
注意缓冲区指向的内存必须保持有效,直到回调被调用。这也适用于 uv_write2()。
因此,缓冲区的基础可能需要动态分配。调用函数可能如下所示:
void write_to_stream(uv_stream_t* stream) {
uv_write_t* write_req = new uv_write_t;
uv_buf_t buf{};
buf.base = new char[1024];
buf.len = 1024;
// fill the buffer
uv_write(write_req, stream, buf, 1, on_write);
}
在这种情况下,new char[1024] 分配的内存需要在触发on_write 回调之前有效。
查看回调void on_write(uv_write_t* req, int status) 的签名,不清楚如何释放此内存,因为似乎无法从回调中访问此指针。
void on_write(uv_write_t* req, int status) {
// how to find the memory allocated for req's buffer?
delete[] ???;
}
一旦不再需要该内存,释放该内存的预期方法是什么?
【问题讨论】: