Я использую protobuf внутри функции nif (erlang nif), и мне нужно создать ресурс типа сообщения protobuf. Я написал что-то вроде этого:
ERL_NIF_TERM create_resource(ErlNifEnv *env, const MyClass &msg)
{
size_t size = sizeof(MyClass);
MyClass *class = (MyClass *)enif_alloc_resource(MY_CLASS, size);
memcpy(class, &msg, size);
// class->CopyFrom(&msg);
ERL_NIF_TERM term = enif_make_resource(env, class);
enif_release_resource(class);
return term;
}
Вопрос в том, допустимо ли копировать сообщение protobuf таким образом, а при очистке просто выпустить его с помощью:
delete pointer
? Кажется, что здесь все правильно, но я не уверен, потому что конструктор копируемого объекта не был вызван, и может быть есть какая-то магия со статическими переменными и т. Д. Также.. мне нужно вызвать CopyFrom после memcpy ?
upd: MyClass - это класс C++, а не C