我做了一个游戏的连接-4在C++的一些人工智能问题,并连接到一个nodejs网络服务器作为一个插件。
我是这样工作的:
v8::Isolate *isolate = v8::Isolate::GetCurrent();
Game *game_ptr = new Game();
game_ptr->nextPlayer();
Local<ObjectTemplate> game_template = ObjectTemplate::New(isolate);
game_template->SetInternalFieldCount(1);
Local<Object> game = game_template->NewInstance();
game->SetInternalField(0, External::New(isolate, game_ptr));我的问题是:游戏(被用作v8::External)是垃圾收集的,还是应该自己管理内存?
如果我要管理内存,最好的做法是什么?
发布于 2019-01-14 16:15:08
在c++的口号下,只为您使用的东西付费,没有垃圾收集。这意味着您需要自己管理内存。在这种特殊情况下,您有两个选项:
new玩游戏。根据应用程序的不同,仅仅使用Game game;可能就足够了。new Game,可以使用RAII (资源获取是初始化)成语类型包装新的。您可以利用c++智能指针:
auto game_ptr = std::make_unique<Game>();
当unique_ptr的作用域结束时,它包含的内存将自动释放。https://stackoverflow.com/questions/54184864
复制相似问题