Мені відомо кілька ігор, які написані на C ++, але не використовують винятки. Оскільки поводження з помилкою розподілу пам'яті в C ++, як правило, будується навколо std::bad_alloc
винятку, як ці ігри впораються з таким збоєм?
Вони просто виходять з ладу, або є інший спосіб впоратися з помилкою, що не залишилася в пам'яті?
std::terminate
, і все. Але тоді за тим же обмеженням виділення може повернути нульовий покажчик замість викидання винятку, і цей результат можна перевірити та обробляти окремо.
ClassName variableName = new(nothrow) ClassName();
( очевидно, замінюючи ім'я класу, назву змінної тощо ). Потім, якщо розподіл не вдасться, ви можете виявити його, сказавши, if(!variableName)
що дозволяє обробляти помилку без блоку виключень спробувати. Точно так же, якщо пам'ять виділяється з використанням функції , як malloc()
, calloc()
і т.д., то відмови виділити можуть бути виявлені з використанням того ж if(!variableName)
методу без необхідності Try-улов. Що стосується того, як ігри впораються з цими помилками, тож, в цей момент, вирішувати, чи виходить з ладу чи ні, вирішуватиме розробка ігор.