Класс CHeapPtrBase
Этот класс формирует основу для нескольких классов смарт-указателя кучи.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
template <class T, class Allocator = CCRTAllocator>
class CHeapPtrBase
Параметры
T
Тип объекта, который должен храниться в куче.
Allocator
Используемый класс выделения памяти. По умолчанию подпрограммы CRT используются для выделения и освобождения памяти.
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CHeapPtrBase::~CHeapPtrBase |
Деструктор |
Открытые методы
Имя | Описание |
---|---|
CHeapPtrBase::AllocateBytes |
Вызовите этот метод для выделения памяти. |
CHeapPtrBase::Attach |
Вызовите этот метод для владения существующим указателем. |
CHeapPtrBase::Detach |
Вызовите этот метод, чтобы освободить владение указателем. |
CHeapPtrBase::Free |
Вызовите этот метод для удаления объекта, на который указывает объект CHeapPtrBase . |
CHeapPtrBase::ReallocateBytes |
Вызовите этот метод для перераспределирования памяти. |
Общедоступные операторы
Имя | Описание |
---|---|
CHeapPtrBase::operator T* |
Оператор приведения. |
CHeapPtrBase::operator & |
Оператор >. |
CHeapPtrBase::operator -> |
Оператор указателя на член. |
Общедоступные члены данных
Имя | Описание |
---|---|
CHeapPtrBase::m_pData |
Переменная элемента данных указателя. |
Замечания
Этот класс формирует основу для нескольких классов смарт-указателя кучи. Производные классы, например, CHeapPtr
и CComHeapPtr
добавьте собственные конструкторы и операторы. Примеры реализации см. в этих классах.
Требования
Заголовок: atlcore.h
CHeapPtrBase::AllocateBytes
Вызовите этот метод для выделения памяти.
bool AllocateBytes(size_t nBytes) throw();
Параметры
nBytes
Количество байтов памяти для выделения.
Возвращаемое значение
Возвращает значение true, если память успешно выделена, значение false в противном случае.
Замечания
В отладочных сборках ошибка утверждения будет возникать, если CHeapPtrBase::m_pData
переменная-член в настоящее время указывает на существующее значение, то есть не равно NULL.
CHeapPtrBase::Attach
Вызовите этот метод для владения существующим указателем.
void Attach(T* pData) throw();
Параметры
pData
Объект CHeapPtrBase
будет иметь владение этим указателем.
Замечания
CHeapPtrBase
Когда объект берет на себя владение указателем, он автоматически удаляет указатель и все выделенные данные при выходе из области.
В отладочных сборках ошибка утверждения будет возникать, если CHeapPtrBase::m_pData
переменная-член в настоящее время указывает на существующее значение, то есть не равно NULL.
CHeapPtrBase::~CHeapPtrBase
Деструктор
~CHeapPtrBase() throw();
Замечания
Освобождает все выделенные ресурсы.
CHeapPtrBase::Detach
Вызовите этот метод, чтобы освободить владение указателем.
T* Detach() throw();
Возвращаемое значение
Возвращает копию указателя.
Замечания
Освобождает права владения указателем, задает CHeapPtrBase::m_pData
переменную-член значение NULL и возвращает копию указателя.
CHeapPtrBase::Free
Вызовите этот метод для удаления объекта, на который указывает объект CHeapPtrBase
.
void Free() throw();
Замечания
Объект, на который указывает CHeapPtrBase
освобожден, и CHeapPtrBase::m_pData
переменная-член имеет значение NULL.
CHeapPtrBase::m_pData
Переменная элемента данных указателя.
T* m_pData;
Замечания
Эта переменная-член содержит сведения указателя.
CHeapPtrBase::operator &
Оператор >.
T** operator&() throw();
Возвращаемое значение
Возвращает адрес объекта, на который указывает CHeapPtrBase
объект.
CHeapPtrBase::operator ->
Оператор указателя на член.
T* operator->() const throw();
Возвращаемое значение
Возвращает значение переменной-члена CHeapPtrBase::m_pData
.
Замечания
Этот оператор используется для вызова метода в классе, на который указывает CHeapPtrBase
объект. В отладочных сборках происходит сбой утверждения, если CHeapPtrBase
указывает на ЗНАЧЕНИЕ NULL.
CHeapPtrBase::operator T*
Оператор приведения.
operator T*() const throw();
Замечания
Возвращает CHeapPtrBase::m_pData
.
CHeapPtrBase::ReallocateBytes
Вызовите этот метод для перераспределирования памяти.
bool ReallocateBytes(size_t nBytes) throw();
Параметры
nBytes
Новый объем памяти для выделения в байтах.
Возвращаемое значение
Возвращает значение true, если память успешно выделена, значение false в противном случае.