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

继承层次结构

CHeapPtrBase

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);   

另请参阅

CHeapPtrBase 类
CCRTAllocator 类
类概述