Fabcoin Core  0.16.2
P2P Digital Currency
Classes | Public Member Functions | List of all members
AllocatorWithCleanup< T, T_Align16 > Class Template Reference

Allocates a block of memory with cleanup. More...

#include <secblock.h>

Inheritance diagram for AllocatorWithCleanup< T, T_Align16 >:
[legend]
Collaboration diagram for AllocatorWithCleanup< T, T_Align16 >:
[legend]

Classes

struct  rebind
 Template class memeber Rebind. More...
 

Public Member Functions

CRYPTOPP_INHERIT_ALLOCATOR_TYPES pointer allocate (size_type size, const void *ptr=NULL)
 Allocates a block of memory. More...
 
void deallocate (void *ptr, size_type size)
 Deallocates a block of memory. More...
 
pointer reallocate (T *oldPtr, size_type oldSize, size_type newSize, bool preserve)
 Reallocates a block of memory. More...
 
- Public Member Functions inherited from AllocatorBase< T >
pointer address (reference r) const
 
const_pointer address (const_reference r) const
 
void construct (pointer p, const T &val)
 
void destroy (pointer p)
 
CRYPTOPP_CONSTEXPR size_type max_size () const
 Returns the maximum number of elements the allocator can provide. More...
 

Additional Inherited Members

- Public Types inherited from AllocatorBase< T >
typedef T value_type
 
typedef size_t size_type
 
typedef std::ptrdiff_t difference_type
 
typedef Tpointer
 
typedef const Tconst_pointer
 
typedef Treference
 
typedef const Tconst_reference
 
- Static Protected Member Functions inherited from AllocatorBase< T >
static void CheckSize (size_t size)
 Verifies the allocator can satisfy a request based on size. More...
 

Detailed Description

template<class T, bool T_Align16 = false>
class AllocatorWithCleanup< T, T_Align16 >

Allocates a block of memory with cleanup.

Template Parameters
Tclass or type
T_Align16boolean that determines whether allocations should be aligned on 16-byte boundaries

If T_Align16 is true, then AllocatorWithCleanup calls AlignedAllocate() for memory allocations. If T_Align16 is false, then AllocatorWithCleanup() calls UnalignedAllocate() for memory allocations.

Template parameter T_Align16 is effectively controlled by cryptlib.h and mirrors CRYPTOPP_BOOL_ALIGN16. CRYPTOPP_BOOL_ALIGN16 is often used as the template parameter.

Definition at line 151 of file secblock.h.

Member Function Documentation

template<class T, bool T_Align16 = false>
CRYPTOPP_INHERIT_ALLOCATOR_TYPES pointer AllocatorWithCleanup< T, T_Align16 >::allocate ( size_type  size,
const void *  ptr = NULL 
)
inline

Allocates a block of memory.

Parameters
ptrthe size of the allocation
sizethe size of the allocation, in elements
Returns
a memory block
Exceptions
InvalidArgument

allocate() first checks the size of the request. If it is non-0 and less than max_size(), then an attempt is made to fulfill the request using either AlignedAllocate() or UnalignedAllocate().

AlignedAllocate() is used if T_Align16 is true. UnalignedAllocate() used if T_Align16 is false.

This is the C++ Placement New operator. ptr is not used, and the function CRYPTOPP_ASSERTs in Debug builds if ptr is non-NULL.

See also
CallNewHandler() for the methods used to recover from a failed allocation attempt.
Note
size is the count of elements, and not the number of bytes

Definition at line 171 of file secblock.h.

Here is the caller graph for this function:

template<class T, bool T_Align16 = false>
void AllocatorWithCleanup< T, T_Align16 >::deallocate ( void *  ptr,
size_type  size 
)
inline

Deallocates a block of memory.

Parameters
ptrthe pointer for the allocation
sizethe size of the allocation, in elements

Internally, SecureWipeArray() is called before deallocating the memory. Once the memory block is wiped or zeroized, AlignedDeallocate() or UnalignedDeallocate() is called.

AlignedDeallocate() is used if T_Align16 is true. UnalignedDeallocate() used if T_Align16 is false.

Definition at line 195 of file secblock.h.

Here is the caller graph for this function:

template<class T, bool T_Align16 = false>
pointer AllocatorWithCleanup< T, T_Align16 >::reallocate ( T oldPtr,
size_type  oldSize,
size_type  newSize,
bool  preserve 
)
inline

Reallocates a block of memory.

Parameters
oldPtrthe previous allocation
oldSizethe size of the previous allocation
newSizethe new, requested size
preserveflag that indicates if the old allocation should be preserved
Returns
pointer to the new memory block

Internally, reallocate() calls StandardReallocate().

If preserve is true, then index 0 is used to begin copying the old memory block to the new one. If the block grows, then the old array is copied in its entirety. If the block shrinks, then only newSize elements are copied from the old block to the new one.

Note
oldSize and newSize are the count of elements, and not the number of bytes.

Definition at line 221 of file secblock.h.


The documentation for this class was generated from the following file: