memorypool.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:1k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // memorypool.h
  2. //
  3. // A simple, sequential allocator with zero overhead for allocating
  4. // and freeing objects.
  5. //
  6. // Copyright (C) 2008, the Celestia Development Team
  7. // Initial version by Chris Laurel <claurel@gmail.com>
  8. //
  9. // This program is free software; you can redistribute it and/or
  10. // modify it under the terms of the GNU General Public License
  11. // as published by the Free Software Foundation; either version 2
  12. // of the License, or (at your option) any later version.
  13. #ifndef _CELUTIL_MEMORYPOOL_H_
  14. #define _CELUTIL_MEMORYPOOL_H_
  15. #include <list>
  16. class MemoryPool
  17. {
  18. public:
  19.     MemoryPool(unsigned int alignment, unsigned int blockSize);
  20.     ~MemoryPool();
  21.     
  22.     void* allocate(unsigned int size);
  23.     void freeAll();
  24.     
  25.     unsigned int blockSize() const;
  26.     unsigned int alignment() const;
  27.     
  28. private:
  29.     unsigned int m_alignment;
  30.     unsigned int m_blockSize;
  31.     struct Block
  32.     {
  33.         char* m_memory;
  34.     };
  35.     
  36.     std::list<Block> m_blockList;
  37.     std::list<Block>::iterator m_currentBlock;
  38.     unsigned int m_blockOffset;
  39. };
  40. #endif // _CELUTIL_MEMORYPOOL_H_