Поделиться через


Класс CHeapPtr

Класс интеллектуального указателя для управления указателями кучи.

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

template<typename T, class Allocator=CCRTAllocator>
class CHeapPtr : public CHeapPtrBase<T, Allocator>

Параметры

T
Тип объекта, который должен храниться в куче.

Распределителя
Используемый класс выделения памяти.

Участники

Открытые конструкторы

Имя Описание
CHeapPtr::CHeapPtr Конструктор.

Открытые методы

Имя Описание
CHeapPtr::Allocate Вызовите этот метод, чтобы выделить память в куче для хранения объектов.
CHeapPtr::Reallocate Вызовите этот метод, чтобы перераспределить память в куче.

Открытые операторы

Имя Описание
CHeapPtr::operator = Оператор присваивания .

Замечания

CHeapPtr производный от CHeapPtrBase , и по умолчанию использует подпрограммы CRT (в CCRTAllocator) для выделения и освобождения памяти. Класс CHeapPtrList можно использовать для создания списка указателей кучи. См. также CComHeapPtr, в котором используются процедуры выделения памяти COM.

Иерархия наследования

CHeapPtrBase

CHeapPtr

Требования

Заголовок: atlcore.h

CHeapPtr::Allocate

Вызовите этот метод, чтобы выделить память в куче для хранения объектов.

bool Allocate(size_t nElements = 1) throw();

Параметры

nElements
Количество элементов, используемых для вычисления объема памяти для выделения. Значение по умолчанию равно 1.

Возвращаемое значение

Возвращает значение true, если память была успешно выделена, значение false при сбое.

Замечания

Подпрограммы распределителя используются для резервирования достаточной памяти в куче для хранения объектов nElement типа, определенного в конструкторе.

Пример

// Create a new CHeapPtr object
CHeapPtr <int> myHP;
// Allocate space for 10 integers on the heap
myHP.Allocate(10);

CHeapPtr::CHeapPtr

Конструктор.

CHeapPtr() throw();
explicit CHeapPtr(T* p) throw();
CHeapPtr(CHeapPtr<T, Allocator>& p) throw();

Параметры

p
Существующий указатель кучи или CHeapPtr.

Замечания

Указатель кучи можно создать при необходимости с помощью существующего указателя или CHeapPtr объекта. В этом случае новый CHeapPtr объект несет ответственность за управление новым указателем и ресурсами.

Пример

// Create a new CHeapPtr object
CHeapPtr <int> myHP;
// Create a new CHeapPtr from the first
CHeapPtr <int> myHP2(myHP);   

CHeapPtr::operator =

Оператор присвоения.

CHeapPtr<T, Allocator>& operator=(
    CHeapPtr<T, Allocator>& p) throw();

Параметры

p
Существующий объект CHeapPtr.

Возвращаемое значение

Возвращает ссылку на обновленную CHeapPtr.

Пример

// Create a new CHeapPtr object
CHeapPtr <int> myHP;
// Allocate space for 10 integers on the heap
myHP.Allocate(10);
// Create a second heap pointer
// and assign it to the first pointer.
CHeapPtr <int> myHP2;
myHP2 = myHP;   

CHeapPtr::Reallocate

Вызовите этот метод, чтобы перераспределить память в куче.

bool Reallocate(size_t nElements) throw();

Параметры

nElements
Новое число элементов, используемых для вычисления объема памяти для выделения.

Возвращаемое значение

Возвращает значение true, если память была успешно выделена, значение false при сбое.

Пример

// Create a new CHeapPtr object
CHeapPtr <int> myHP;
// Allocate space for 10 integers on the heap
myHP.Allocate(10);
// Resize the allocated memory for 20 integers
myHP.Reallocate(20);   

См. также

Класс CHeapPtrBase
Класс CCRTAllocator
Общие сведения о классе