#include"neicun.h" #include #include // 包含 operator new 和 operator delete 的定义 // 构造函数 ThreadSafeMemoryPool::ThreadSafeMemoryPool(size_t blockSize, size_t blockCount) : blockSize_(blockSize), blockCount_(blockCount) { init(); } // 分配内存 void* ThreadSafeMemoryPool::allocate() { std::lock_guard lock(mutex_); if (freeBlocks_.empty()) { std::cerr << "Memory pool exhausted!" << std::endl; return nullptr; } void* block = freeBlocks_.back(); freeBlocks_.pop_back(); return block; } // 释放内存 void ThreadSafeMemoryPool::deallocate(void* ptr) { std::lock_guard lock(mutex_); freeBlocks_.push_back(ptr); } // 析构函数 ThreadSafeMemoryPool::~ThreadSafeMemoryPool() { for (void* block : allocatedBlocks_) { ::operator delete(block); // 使用全局的 operator delete 释放内存 } } // 初始化内存池 void ThreadSafeMemoryPool::init() { for (size_t i = 0; i < blockCount_; ++i) { void* block = ::operator new(blockSize_); // 使用全局的 operator new 分配内存 allocatedBlocks_.push_back(block); freeBlocks_.push_back(block); } }