Рассмотрим официальную документацию для libuv (раздел разные утилиты).
Это объявление uv_buf_init
:
uv_buf_t uv_buf_init(char* base, unsigned int len)
В документации говорится, что (выделено мной):
Конструктор для uv_buf_t.
Из-за различий в платформах пользователь не может полагаться на порядок элементов base и len структуры uv_buf_t. Пользователь несет ответственность за освобождение базы после выполнения uv_buf_t. Возвращает структуру, переданную по значению.
Мне кажется, что base
можно освободить сразу после обращения к uv_buf_init
.
С другой стороны, структура uv_buf_t
задокументирована как состоит из двух полей: base
с типом char *
и len
с типом size_t
.
Что мне непонятно:
Копируются ли данные в буфер? (Ну, я полагаю, что ответ отрицательный, потому что это было бы большим штрафом с точки зрения производительности).
Должен ли я освобождать данные после вызова
uv_try_write
или других функций*_write
? То есть после того, как данные действительно были использованы.