代码之家  ›  专栏  ›  技术社区  ›  Alexandre Senges

C++外部的垃圾回收[复制]

  •  0
  • Alexandre Senges  · 技术社区  · 7 年前

    我在C++中做了一个关于一些AI问题的连接4的游戏,并把它连接到一个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

    1 回复  |  直到 7 年前
        1
  •  4
  •   Fantastic Mr Fox    7 年前

    根据 c++ 只为你使用的东西付费,没有垃圾收集。这意味着您需要自己管理内存。在这种情况下,您有两种选择:

    1. new . 根据您的应用程序,只需使用 Game game; 也许足够了。
    2. 刚出现的 Game ,将新代码包装在RAII(Resource acquisition is initialization)习惯用法类型中。你可以利用 C++

      auto game_ptr = std::make_unique<Game>();

      当 unique_ptr 结束时,它包含的内存将自动释放。