СПОСОБ ОПРЕДЕЛЕНИЯ ОШИБОК ДОСТУПА К ПАМЯТИ В КОМПЬЮТЕРНОЙ СИСТЕМЕ

1. Способ определения ошибок доступа к памяти в компьютерной системе, предусматривающий выполнение следующих операций:
этап 1 - запускают компьютерную систему с требуемой программой;
этап 2 - перехватывают интерфейс выделения/освобождения памяти с целью выделения дополнительной области памяти в виде «красной зоны»;
этап 3 - определяют во время выполнения программы, где находится «красная зона» запрошенной памяти программы или невыделенная область памяти, при этом сравнивают адреса запрошенной памяти и выделенных областей динамически распределяемой памяти;
этап 4 - предоставляют информацию обо всех ошибочных доступах к памяти пользователю,
отличающийся тем, что между этапом 2 и этапом 3 защищают «красную зону» и область запрашиваемой памяти от записи и считывания и перехватывают подсистему обработки некорректных обращений к страницам памяти для определения адресов памяти, к которой был осуществлен доступ, а на этапе 3 во время выполнения программы дополнительно определяют, запрашивает ли программа выделенный объект, «красную зону» или невыделенную область памяти, путем сравнения адреса запрошенной памяти и областей, размещенных в динамически распределяемой памяти.
2. Способ по п.1, отличающийся тем, что дополнительно определяют на этапе 4 в процессе выполнения программы, запрашивает ли программа выделенный объект, «красную зону» или невыделенную область памяти путем сравнения адреса запрошенной памяти и областей, размещенных в динамически распределяемой памяти, при этом выполняют следующие подэтапы:
подэтап 3.1 - определяют, все ли объекты памяти, выделенные посредством перехвата интерфейса выделения/освобождения памяти, защищены от считывания и записи, при положительном результате переходят к подэтапу 3.3, в ином случае переходят к подэтапу 3.2;
подэтап 3.2 - определяют наличие незащищенного объекта среди выделенных объектов памяти посредством перехвата интерфейса выделения/освобождения памяти, при положительном результате защищают данный объект от записи/считывания и переходят к подэтапу 3.3;
подэтап 3.3 - определяют, находится ли адрес памяти, к которой осуществляется доступ, внутри объекта, выделенного в динамически распределяемой области памяти, при положительном результате защиту данного объекта аннулируют и возобновляют выполнение программы;
подэтап 3.4 - если адрес памяти, к которой осуществляется доступ, находится внутри «красной зоны» объекта, выделенного в динамически распределяемой области памяти, тогда: защиту данного объекта оставляют прежней; формируют сообщение об ошибке о некорректном доступе к памяти; возобновляют выполнение программы со следующей инструкции путем инкремента значения регистра счетчика инструкций процессора (при этом интерпретацию выполняемой инструкции не производят);
подэтап 3.5 - если адрес памяти, к которой осуществляется доступ, находится вне какого-либо объекта, выделенного в динамически распределяемой области памяти и соответствующей «красной зоны», но внутри области памяти, которая допускает этот доступ, тогда выполнение программы возобновляют;
подэтап 3.6 - если адрес памяти, к которой осуществляется доступ, находится вне какого-либо объекта, выделенного в динамически распределяемой области памяти и соответствующей «красной зоны», а также вне областей памяти, допускающих этот доступ, тогда формируют сообщение об ошибке, заключающейся в некорректном доступе к памяти.