![]() |
1
60
VC6在这方面违约。VC6的
如果您有为VC6行为编写的旧代码,则可以通过在名为
看来
MS cleaned this up
请注意,您可以指定所需的
|
![]() |
2
20
我想补充一点(有点争议)意见,即在分配尝试后检查NULL几乎是徒劳的。如果你的程序遇到这种情况,很有可能你只能快速退出。很可能任何后续分配尝试也会失败。
我不是想说服你不要检查NULL,这当然是认真的编程。但你不会从中获得太多,除非在非常特殊的情况下,你可能可以存储一些恢复信息(而不分配更多内存),或者释放不太重要的内存,等等。但这些情况对大多数人来说相对较少。 有鉴于此,我相信编译器会亲自抛出bad_alloc,至少在大多数情况下是这样。 |
![]() |
3
9
在C++规范的基础上,它总是抛出STD::BADYOLL,当你使用普通的新的没有参数的时候,当然也会有一些不兼容的编译器。
不过,删除指针后,最好将指针设置为NULL。因此,仍然需要检查NULL。
选项1:设置自己的新处理程序 清理代码的安全方法是调用: set_new_handler 第一
如果你更喜欢例外情况,那么这是你最好的选择。如果您希望更好地返回NULL,那么也可以通过在新处理程序中执行catch来实现。 选项2:使用重载的新
因此,在您的代码中:
|