From 9b9b497ed27bd7797c04395d384f1115b5ba2b52 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 28 Apr 2023 19:14:49 +0800 Subject: [PATCH] 1 --- server/gameserver/mt/MetaMgr.cc | 3 +++ server/gameserver/mt/MetaMgr.h | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/server/gameserver/mt/MetaMgr.cc b/server/gameserver/mt/MetaMgr.cc index cbeb2004..5300cf58 100644 --- a/server/gameserver/mt/MetaMgr.cc +++ b/server/gameserver/mt/MetaMgr.cc @@ -133,6 +133,9 @@ namespace mt void MetaMgr::UnInit() { + for (auto t : meta_tables) { + t->destory_cb(); + } meta_tables.clear(); } diff --git a/server/gameserver/mt/MetaMgr.h b/server/gameserver/mt/MetaMgr.h index 6ad597ce..764d1532 100644 --- a/server/gameserver/mt/MetaMgr.h +++ b/server/gameserver/mt/MetaMgr.h @@ -58,6 +58,7 @@ namespace mt struct MetaTable { + std::function destory_cb; std::function static_pre_init_cb; std::function load_cb; std::vector> init_cbs; @@ -82,6 +83,16 @@ namespace mt void RegMetaTable(const std::string& dir) { std::shared_ptr p = std::make_shared(); + p->destory_cb = + [] () + { + for (T* item : T::raw_list) { + delete item; + } + T::raw_list.clear(); + T::id_hash.clear(); + T::name_hash.clear(); + }; p->static_pre_init_cb = [] () {