Что является лучшим способом проверки возврата указателя на new operator
Я вижу следующий тип кода. Предположим, у меня есть class Test
указатель return by new check in C++
Тип 1
Test *ptr = new Test;
if (ptr == NULL) {
}
Тип 2
Test *ptr = new Test;
if (!ptr) {
}
Тип 3
Test *ptr = new Test;
if (ptr == (Test*)0) {
}
Пожалуйста, определить, что вы подразумеваете под «лучше». А как насчет исключений? Используете ли вы специальный 'новый', который не вызывает исключений? –
лучшим будет 'if (ptr == nullptr)', но это предполагает совместимый с C++ 11 компилятор. – PeterT
Вы случайно посмотрите на старый код Win32/Windows/COM? Текущий код на C++ генерирует исключения в случае новых сбоев; но прежде чем исключения были широко поддержаны, вам нужно было проверить NULL.Иногда Windows или COM-код отказывается от использования исключений, чтобы избежать портирования старых кодовых баз или просто потому, что с ними иногда легче справляться: COM требует, чтобы все исключения были преобразованы в HRESULT перед возвратом из интерфейса. См. Ответ на [этот вопрос SO] (http://stackoverflow.com/a/550457/660175) для получения более подробной информации. – BrendanMcK