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 可用于构造堆指针列表。 另请参阅使用 COM 内存分配例程的 CComHeapPtr。
继承层次结构
CHeapPtr
要求
标头:atlcom.h
CHeapPtr::Allocate
调用此方法可分配堆上的内存以存储对象。
bool Allocate(size_t nElements = 1) throw();
参数
nElements
用于计算要分配的内存量的元素数。 默认值为 1。
返回值
如果成功分配内存,则返回 true;如果失败,则返回 failure。
备注
分配器例程用于在堆上保留足够的内存,以存储构造函数中所定义类型的 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;如果失败,则返回 failure。
示例
// 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);