Gotcha #61: Checking for Allocation Failure
Gotcha条款61:检查内存分配失败的情形
有些问题就是不应该问,“某个内存分配动作是否成功”正属其一。
让我们来看看C++中的内存分配曾经是个什么样子。下面这段代码仔细检查了每次内存分配的成功与否:
bool error = false;
String **array = new String *[n];
if( array ) {
for( String **p = array; p < array+n; ++p ) {
String *tmp = new String;
if( tmp )
*p = tmp;
else {

博客围绕C++中内存分配失败的检查展开。指出检查每次内存分配成功与否的编码风格会带来麻烦,更好的方法是不做检查,让new在分配失败时抛出bad_alloc异常。还介绍了operator new的”nothrow”版本,但不建议使用。运行期系统会自动处理分配失败时的复杂问题。

1万+

被折叠的 条评论
为什么被折叠?



