Зальцман М.
Компьютерные игры: как это делается
стр. 189

данных. Нередко попытка обращения к областям памяти находящимся за пределами массивов, вызывает общий сбой Windows - General Protection Fault (GPF). Например, если массив содержит только пять элементов, а программа попытается получить доступ к восьмому, вы увидите на экране сообщение о GPF. Чтобы застраховать себя от подобных ошибок, обратите внимание на следующую программу.

Это должен сделать каждый программист - создать шаблон для массивов. Не используйте массивы в стиле Си, если это не является абсолютно необходимым. Определение шаблона должно выглядеть примерно так:

template <class Entry> class Array {

private:

Entry *pEntry; int iSize;

Далее шаблон содержит внутренние компоненты для добавления (размещения) и удаления записей массива, а также компоненты для доступа к массиву, подобные приведенному ниже:

public:

// Обеспечивает доступ к записям массива...

Entry &operator [](const int ilndex) const {

Assert(ilndex >= 0 && ilndex < iSize); return pEntry[ilndex];

}

Функция Assert очень важна, так как она вызывает ошибку отладки, если значение выражения-аргумента Assert равно FALSE. Этот небольшой фрагмент программы спас нас от такого количества ошибок, что я просто не представляю, что бы мы без него делали. Наш макрос Assert выглядит примерно так:

// Режим отладки:

#if defined(_DEBUG)

extern BOOL MyAssertFunc(BOOL, int, char *};

#define NatBreakf) { _asm { int 3 } }

// Утверждает, что значение ехр - истина.

#define Assert(ехр) \

if (MyAssertFunc((int)(exp),_LINE_,_FILE_))    \

NatBreak();

// Режим без отладки:


Новости
В GTA Online появились локации, мгновенно убивающие игроков
В GTA Online всегда были забагованные локации, попав в которые вы могли моментально умереть, но появившиеся недавно в игре «точки смерти» - не случайная ошибка, а специально созданные разработчиками игры смертельно опасные зоны.
Утечка: Diablo 3 выйдет на Nintendo Switch уже в этом году
Diablo 3 должна выйти на Nintendo Switch уже в этом году, но точной даты релиза пока что нет.