This commit is contained in:
mutouyun 2019-01-25 13:17:43 +08:00
parent fac45ec38f
commit 6ec8ca9a9e

View File

@ -139,8 +139,8 @@ public:
private: private:
spin_lock lc_; spin_lock lc_;
std::multimap<std::size_t, alloc_policy*, std::less<std::size_t>, std::multimap<std::size_t, alloc_policy*/*, std::less<std::size_t>,
page_allocator<std::pair<const std::size_t, alloc_policy*>>> allocs_; page_allocator<std::pair<const std::size_t, alloc_policy*>>*/> allocs_;
struct alloc_t { struct alloc_t {
synchronized* t_; synchronized* t_;
@ -156,11 +156,12 @@ private:
std::tie(s_, a_) = *it; std::tie(s_, a_) = *it;
t_->allocs_.erase(it); t_->allocs_.erase(it);
} }
if (a_ == nullptr) { // if (a_ == nullptr) {
a_ = static_cast<alloc_policy*>(page_pool_alloc::alloc(sizeof(alloc_policy))); // a_ = static_cast<alloc_policy*>(page_pool_alloc::alloc(sizeof(alloc_policy)));
} // }
} }
::new (a_) alloc_policy; // ::new (a_) alloc_policy;
a_ = new alloc_policy;
} }
~alloc_t() { ~alloc_t() {
@ -196,7 +197,8 @@ public:
IPC_UNUSED_ auto guard = ipc::detail::unique_lock(lc_); IPC_UNUSED_ auto guard = ipc::detail::unique_lock(lc_);
for (auto& pair : allocs_) { for (auto& pair : allocs_) {
pair.second->~AllocP(); pair.second->~AllocP();
page_pool_alloc::free(pair.second, sizeof(alloc_policy)); // page_pool_alloc::free(pair.second, sizeof(alloc_policy));
delete pair.second;
} }
} }