nif関数(erlang nif)内でprotobufを使用しており、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
?すべてがここにあるようですが、私は確信が持てません。コピーされたオブジェクトのコンストラクターが呼び出されず、静的変数などの魔法がある可能性があります...また..memcpyの後にCopyFromを呼び出す必要がありますか?
upd:MyClassはCではなくC++クラスです