Всегда ли нужно проверять bad_alloc при динамическом выделении памяти? - PullRequest
0 голосов
/ 13 ноября 2018

Если new не может найти достаточно памяти, он генерирует исключение.Мне всегда нужно проверять это?Я никогда этого не делал и у меня не было проблем, но теперь я прочитал, что вы должны это сделать.Или только в определенных случаях?

try
{
    pPos = new Vector2D(5,1);
}
catch(bad_alloc)
{
    // NO MEMORY!
}

1 Ответ

0 голосов
/ 13 ноября 2018

В bad_alloc нет ничего особенного, вы можете поймать его или нет, как и любое другое исключение. необычно ловить его. Вы сделали бы это, только если бы у вас был какой-то способ восстановления после нехватки памяти. Но я думаю, что программы, предназначенные для устранения ошибок нехватки памяти, чаще используют вместо nothrow версию new:

pPos = new (std::nothrow) Vector2D(5,1);
if (!pPos) {
    // NO MEMORY!
}
...