Согласно C++ ссылке, вы можете создать новый объект:
MyClass * p1 = new MyClass;
или
MyClass * p2 = new (std::nothrow) MyClass;
Второй возвращает пустой указатель вместо того, чтобы бросать исключение.
Тем не менее, я почти не вижу эту версию в своем опыте.
Например, Google не рекомендует использовать исключение в своем коде, но они не используют версию nothrow ни в Chromium, как я вижу.
Есть ли какая-то причина, по которой мы предпочитаем дефолт по отношению к нечетному? Даже в проекте, который не использует исключение?
-- РЕДАКТИРОВАТЬ --
Следующий вопрос: следует ли проверять возвращаемое значение malloc()
?
Похоже, напротив, многие люди советуют проверять возвращаемое значение malloc, некоторые говорят, потому что:
многие неудачи распределения не имеют ничего общего с отсутствием памяти. Фрагментация может привести к сбою распределения, потому что недостаточно свободного пространства, хотя у него много свободного места.
Это правда? Почему мы рассматриваем malloc()
и new()
разному в этом случае?