[当我学习C99时,我被告知要始终检查malloc
的返回值以检查它是成功还是失败,但是现在我开始学习C ++,并被告知没有必要为此,您可以使用关键字new
,并且可以假设它始终对您有效。
但是为什么呢?
答案是malloc
是库函数,而new
是C ++运算符。 New
分配内存并调用构造函数进行对象初始化:如果失败,则抛出异常std::bad_alloc
。 malloc()
分配内存,不调用构造函数,如果失败则返回null
new
仍然可能失败并引发异常,并且您的程序需要检查是否没有异常。还有一个标志可以传递给new
以使其像malloc
一样工作,并在错误时返回NULL
。看一下文档[1]。
有很多方法可以检查返回值,
我更喜欢第二和第三。