Я пытаюсь изучить libuv, создавая небольшие программы с помощью его документации. Обратите внимание, что я буду использовать его через c++
язык, а не c
. Вот то, что я начал с -избегая malloc в C++: неверное преобразование из 'void *' в 'uv_loop_t *
#include <iostream>
#include <uv.h>
int main() {
uv_loop_t *loop = malloc(sizeof(uv_loop_t));
uv_loop_init(loop);
std::cout << "Running loop" << std::endl;
uv_run(loop, UV_RUN_DEFAULT);
uv_loop_close(loop);
free(loop);
return 0;
}
и скомпилирован с - g++ -std=c++14 -luv main.cpp
, который должен дать a.out
в качестве выходного файла, но он терпит неудачу с ошибкой -
недействительных преобразование из «недействительным *» до ' uv_loop_t * {aka uv_loop_s *}
который указывает на использование malloc. Я подтвердил его, заменив эти строки со старым libuv способ сделать это -
uv_loop_t* loop = uv_loop_new();
...
uv_loop_delete(loop);
, которые не должны работать, но на удивление работает и компилирует прекрасно здесь.
Но я думаю, вместо того, чтобы уклоняться от этой проблемы, я должен решить это с хорошим способом в C++. Поэтому здесь я прошу о хорошей альтернативе в C++ (возможно, без управления malloc/manual memory), поэтому я могу продолжить.
Возможный дубликат [недопустимого преобразования из \ 'аннулируются \ * 'в \' символ \ *' при использовании таНос?] (http://stackoverflow.com/questions/5099669/invalid- convert-from-void-to-char-when-use-malloc) – LogicStuff
@LogicStuff Я пытаюсь избежать malloc здесь, не пытаясь его использовать, поэтому извините за любые неудобства. –
Зачем использовать динамическую память? Почему бы не просто 'uv_loop_t loop; uv_loop_init (&loop); '? – melpomene