new

来源:互联网 发布:张艺兴最新问答知乎 编辑:程序博客网 时间:2024/05/09 22:22

//lint -e1775
//lint -e1795
#ifndef VOS_COMMON_H_INCLUDE
#define VOS_COMMON_H_INCLUDE

#pragma warning(disable : 4786 4503 4996)
#include <stdlib.h>


template<class T>
T* VOS_NEW(T* &m, unsigned long ulMuili = 0)
{
    try
    {
        if (ulMuili == 0)
        {
            m = new(T);
        }
        else
        {
            m = new(T[ulMuili]);
        }
        return m;
    }
    catch(...)
    {
        m = NULL;
        return NULL;
    }
};

enum DELETE_MULTI
{
    SINGLE = 0,
    MULTI = 1
};
   
template<class T>
void VOS_DELETE(T* &m, unsigned long ulMuili = 0)
{
    if (NULL == m)
    {
        return;
    }
   
    __try
    {
        if (0 == ulMuili)
        {
            delete m;
        }
        else
        {
            delete[] m;
        }
    }
    __except(1)
    {
    }
   
    m = NULL;
};

//将空指针安全转化为真实指针
template<class T>
T* VOS_CAST(T* pVoid)
{
    T* pReal = NULL;

    try
    {
        pReal = dynamic_cast<T*>(pVoid);
    }
    catch(...)
    {
        pReal = NULL;
    }

    return pReal;
};

#endif //VOS_COMMON_H_INCLUDE

原创粉丝点击