【发布时间】:2012-02-18 12:12:37
【问题描述】:
检查new operator 指针返回的最佳方法是什么
我看到以下类型的代码。假设我有class Test
类型 1
Test *ptr = new Test;
if ( ptr == NULL ) {
}
类型 2
Test *ptr = new Test;
if ( !ptr ) {
}
类型 3
Test *ptr = new Test;
if ( ptr == (Test*)0 ) {
}
【问题讨论】:
-
请定义“最佳”的含义。那么异常呢?您是否使用了一些不会引发异常的特殊
new? -
最好的应该是
if(ptr==nullptr),但前提是兼容 C++11 的编译器。 -
您是否正在查看旧的 Win32/Windows/COM 代码?当前的 C++ 代码在新失败的情况下抛出异常;但在广泛支持异常之前,您必须检查 NULL。有时,Windows 或基于 COM 的代码会选择不使用异常,以避免移植旧代码库,或者只是因为有时更容易处理:COM 要求在从接口返回之前将所有异常转换为 HRESULT。有关更多详细信息,请参阅this SO question 的答案。
标签: c++