![]() |
PEARL
Parallel Event Access and Replay Library
|
Provides a base class for small objects using a custom memory management. More...
#include <pearl/SmallObject.h>
Static Public Member Functions | |
Memory allocation operators | |
static void * | operator new (std::size_t objectSize) |
Allocate storage space. More... | |
static void | operator delete (void *deadObject, std::size_t objectSize) |
Deallocate storage space. More... | |
Protected Member Functions | |
Constructors & destructor | |
~SmallObject () | |
Destructor. More... | |
Each dynamically allocated memory block usually requires some extra memory for bookkeeping purposes. However, this can be quite space inefficient if a large number of small objects is allocated, as the per-object overhead is significant.
The SmallObject
class serves as a base class that can be used for such kinds of small objects, providing a customized memory management that allocates memory in larger chunks rather than individually for each object. This specialized memory management is restricted to objects of not more than 64 bytes, however, if objects grow larger (e.g., objects of a derived class), the default memory allocation routines are used transparently.
operator new
.
|
protected |
Protected destructor destroying the instance.
\n@par Exception safety\n <b class="paramname">No-throw guarantee:</b> never throws exceptions. <br>\n
|
static |
Deallocates the memory block of size objectSize
pointed to by deadObject
if it is not nullptr
, otherwise this operator is a no-op. The memory block pointed to by deadObject
must have been returned by a previous call to SmallObject::operator new on the same thread, otherwise the behavior is undefined.
deadObject | Pointer to the allocated memory |
objectSize | Size of the memory block (in bytes) \n@par Exception safety\n <b class="paramname">No-throw guarantee:</b> never throws exceptions. <br>\n |
|
static |
Allocates objectSize
bytes of storage space and returns a non-null pointer to the first byte of the block. An optimized allocator is used for small objects less than 64 bytes, the default operator new
otherwise.
objectSize | Size of the requested memory block (in bytes) \n@par Exception safety\nIf no (re-)allocations happen, the global state remains unchanged in case of exceptions (strong guarantee). Otherwise the global state is guaranteed to end in a valid state (basic guarantee). |
bad_alloc | on failure to allocate the object memory or any of the required internal data structures |
![]() |
Copyright © 1998–2019 Forschungszentrum Jülich GmbH,
Jülich Supercomputing Centre
Copyright © 2009–2015 German Research School for Simulation Sciences GmbH, Laboratory for Parallel Programming |