Torque3D Documentation / _generateds / rapidjson::Allocator

rapidjson::Allocator

Engine/source/persistence/rapidjson/allocators.h

Concept for allocating, resizing and freeing memory block.

More...

Detailed Description

Concept for allocating, resizing and freeing memory block.

Note that Malloc() and Realloc() are non-static but Free() is static.

So if an allocator need to support Free(), it needs to put its pointer in the header of memory block.

concept Allocator {
   static const bool kNeedFree;  //!< Whether this allocator needs to call Free().

   // Allocate a memory block.
   // \param size of the memory block in bytes.
   // \returns pointer to the memory block.
   void* Malloc(size_t size);

   // Resize a memory block.
   // \param originalPtr The pointer to current memory block. Null pointer is permitted.
   // \param originalSize The current size in bytes. (Design issue: since some allocator may not book-keep this, explicitly pass to it can save memory.)
   // \param newSize the new size in bytes.
   void* Realloc(void* originalPtr, size_t originalSize, size_t newSize);

   // Free a memory block.
   // \param pointer to the memory block. Null pointer is permitted.
   static void Free(void *ptr);
};