1. 程式人生 > >cocos2d 源碼分析----Node create

cocos2d 源碼分析----Node create

else bad 代碼結構 lse try catch code 分析 throw pan

Node * Node::create()
{
    Node * ret = new (std::nothrow) Node();
    if (ret && ret->init())
    {
        ret->autorelease();
    }
    else
    {
        CC_SAFE_DELETE(ret);
    }
    return ret;
}
new operator分配內存失敗後,缺省的行為不是返回NULL,而是拋出異常std::bad_alloc。所以判斷返回值是否為NULL沒有任何意義。使用 try catch 會導致代碼結構很亂,
而使用
new (std::nothrow) 在分配內存失敗時會返回一個空指針,邏輯簡潔清晰。

cocos2d 源碼分析----Node create