Класс 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.
Иерархия наследования
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
Общие сведения о классе