From 1a71313431d205b5804ec4d4a9bd140a8c791ec3 Mon Sep 17 00:00:00 2001 From: mutouyun Date: Fri, 25 Jan 2019 14:00:50 +0800 Subject: [PATCH] no automatically clear --- src/memory/wrapper.h | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/memory/wrapper.h b/src/memory/wrapper.h index 12e4339..aeb5201 100644 --- a/src/memory/wrapper.h +++ b/src/memory/wrapper.h @@ -139,8 +139,8 @@ public: private: spin_lock lc_; - std::multimap, - page_allocator>*/> allocs_; + std::multimap, + page_allocator>> allocs_; struct alloc_t { synchronized* t_; @@ -156,12 +156,11 @@ private: std::tie(s_, a_) = *it; t_->allocs_.erase(it); } -// if (a_ == nullptr) { -// a_ = static_cast(page_pool_alloc::alloc(sizeof(alloc_policy))); -// } + if (a_ == nullptr) { + a_ = static_cast(page_pool_alloc::alloc(sizeof(alloc_policy))); + } } -// ::new (a_) alloc_policy; - a_ = new alloc_policy; + ::new (a_) alloc_policy; } ~alloc_t() { @@ -189,16 +188,11 @@ private: } public: - ~synchronized() { - clear(); - } - void clear() { IPC_UNUSED_ auto guard = ipc::detail::unique_lock(lc_); for (auto& pair : allocs_) { pair.second->~AllocP(); -// page_pool_alloc::free(pair.second, sizeof(alloc_policy)); - delete pair.second; + page_pool_alloc::free(pair.second, sizeof(alloc_policy)); } }