// Very simple pool. It can only allocate memory. And all of the memory it // allocates must be freed at the same time. #ifndef UTIL_POOL_H #define UTIL_POOL_H #include #include namespace util { class Pool { public: Pool(); ~Pool(); void *Allocate(std::size_t size) { void *ret = current_; current_ += size; if (current_ < current_end_) { return ret; } else { return More(size); } } void FreeAll(); private: void *More(std::size_t size); std::vector free_list_; uint8_t *current_, *current_end_; // no copying Pool(const Pool &); Pool &operator=(const Pool &); }; } // namespace util #endif // UTIL_POOL_H