4.3.6 动态内存申请并不一定能成功

    不论是使用标识符new还是用malloc()函数,都不能保证一定能成功地申请到所需要的动态内存。一旦申请失败,标识符new和malloc()函数就会返回空指针null,如果在后续代码中不当使用该指针,程序就有崩掉的危险,因此,出于程序健壮性的考虑,在使用动态申请内存块时,应首先判断申请是否会成功(指针是否为null),如下面的代码所表示。


    char*pC=new char[10]; if(pC!=null) //执行操作 else //内存申请失败处理

    实际上,新的C++标准允许通过抛出异常的方式来判断动态内存是否申请成功,关于这方面的内容将在第16章中进行详细介绍。

    free()和delete一个指针后,该指针所指向的动态内存被释放,但指针的值并不发生变化,常称此时的指针为“野指针”。通常,在内存释放后,将指针赋值为null,这样便不会再次释放已经释放了的内存,并且,通过“if(指针!=null)”也可以进行防错。