Edit

Share via


MakeAllocator Class

Supports the WRL infrastructure and is not intended to be used directly from your code.

Syntax

template<
    typename T,
    bool hasWeakReferenceSupport =
          !__is_base_of(RuntimeClassFlags<InhibitWeakReference>,
                        T)
>
class MakeAllocator;

template<typename T>
class MakeAllocator<T, false>;

template<typename T>
class MakeAllocator<T, true>;

Parameters

T
A type name.

hasWeakReferenceSupport
true to allocate memory for an object that supports weak references; false to allocate memory for an object that doesn't support weak references.

Remarks

Allocates memory for an activatable class, with or without weak reference support.

Override the MakeAllocator class to implement a user-defined memory allocation model.

MakeAllocator is typically used to prevent memory leaks if an object throws during construction.

Members

Public Constructors

Name Description
MakeAllocator::MakeAllocator Initializes a new instance of the MakeAllocator class.
MakeAllocator::~MakeAllocator Deinitializes the current instance of the MakeAllocator class.

Public Methods

Name Description
MakeAllocator::Allocate Allocates memory and associates it with the current MakeAllocator object.
MakeAllocator::Detach Disassociates memory allocated by the Allocate method from the current MakeAllocator object.

Inheritance Hierarchy

MakeAllocator

Requirements

Header: implements.h

Namespace: Microsoft::WRL::Details

MakeAllocator::Allocate

Supports the WRL infrastructure and is not intended to be used directly from your code.

__forceinline void* Allocate();

Return Value

If successful, a pointer to the allocated memory; otherwise, nullptr.

Remarks

Allocates memory and associates it with the current MakeAllocator object.

The size of the allocated memory is the size of the type specified by the current MakeAllocator template parameter.

A developer needs to override only the Allocate() method to implement a different memory allocation model.

MakeAllocator::Detach

Supports the WRL infrastructure and is not intended to be used directly from your code.

__forceinline void Detach();

Remarks

Disassociates memory allocated by the Allocate method from the current MakeAllocator object.

If you call Detach(), you are responsible for deleting the memory provided by the Allocate method.

MakeAllocator::MakeAllocator

Supports the WRL infrastructure and is not intended to be used directly from your code.

MakeAllocator();

Remarks

Initializes a new instance of the MakeAllocator class.

MakeAllocator::~MakeAllocator

Supports the WRL infrastructure and is not intended to be used directly from your code.

~MakeAllocator();

Remarks

Deinitializes the current instance of the MakeAllocator class.

This destructor also deletes the underlying allocated memory if necessary.