我在学习之后做了一些研究new,不像malloc()我习惯的那样,对于失败的分配没有返回NULL,并且发现有两种不同的方法来检查new是否成功.这两种方式是:
try
{
ptr = new int[1024];
}
catch(std::bad_alloc& exc)
{
assert();
};
Run Code Online (Sandbox Code Playgroud)
和
ptr = new (std::nothrow) int[1024];
if(ptr == NULL)
assert();
Run Code Online (Sandbox Code Playgroud)
我相信这两种方式可以实现相同的目标,(如果我当然错了,请纠正我!),所以我的问题是:
这是new完全基于可读性,可维护性和性能检查是否成功的更好选择,同时忽略了事实上的c ++编程约定.