STD_NEW

STD_NEW(alloc, Type)

功能

  • 该宏使用Allocator alloc实例分配所需的内存以创建Type类型的对象。类Type的构造函数将被调用。

alloc

  • 参数alloc是一个Allocator实例。该Allocator要求支持以下concept:
class Allocator
{
public:
    void* allocate(size_t cb, FnDestructor fnDestroy); // Release版本调用这个
    void* allocate(size_t cb, FnDestructor fnDestroy, const char* szFile, int nLine);
        // Debug版本会调用这个
};

Type

  • 参数Type是指要new的对象的类型。

返回值

  • 返回一个类型为Type*的对象实例。

举例

目前,可以应用STD_NEW的两个GC AllocatorAutoFreeAllocScopeAlloc。两者在对STD_NEW的支持上并无任何差异。

AutoFreeAlloc

std::AutoFreeAlloc alloc;
Type* obj = STD_NEW(alloc, Type); // 使用Type类型的默认构造函数
Type* objWithArg = STD_NEW(alloc, Type)(arg1, arg2, ...);
    // 使用Type(arg1, arg2, ...)构造函数

ScopeAlloc

std::BlockPool recycle;
std::ScopeAlloc alloc(recycle);
Type* obj = STD_NEW(alloc, Type); // 使用Type类型的默认构造函数
Type* objWithArg = STD_NEW(alloc, Type)(arg1, arg2, ...);
    // 使用Type(arg1, arg2, ...)构造函数

STD_NEW与MFC共存问题

相关参考

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License