cocos2d 源码分析----Node create

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) 在分配内存失败时会返回一个空指针,逻辑简洁清晰。

猜你喜欢

转载自www.cnblogs.com/ak47-space/p/9259739.html
今日推荐