Введение
Ошибка в аппаратном или программном обеспечении В вычислительной системе нарушение хранения - это ошибка в аппаратном или программном обеспечении, которая возникает, когда задача пытается получить доступ к области компьютерного хранилища, к которой ей не разрешен доступ.
In computing a storage violation is a hardware or software fault that occurs when a task attempts to access an area of computer storage which it is not permitted to access.
Виды нарушений хранения
Например, нарушение хранения может состоять в чтении из, написании или освобождении хранилища, не принадлежащего задаче. Распространенный тип нарушения хранения известен как переполнение буфера стека, когда программа пытается превысить пределы, установленные для своего стека вызовов. Это также может относиться к попытке модификации памяти, "принадлежащей" другому потоку, где есть неполная (или отсутствующая) защита памяти.
Предотвращение нарушений правил хранения
Нарушения хранения могут возникать в транзакционных системах, таких как CICS, в случаях, когда возможно запись в хранилище, не принадлежащее транзакции; такие нарушения могут быть уменьшены путем включения таких функций, как защита хранилища и изоляция транзакций.
Выявление нарушений хранения
Нарушения хранения могут быть трудно обнаружить, поскольку программа может часто работать в течение определенного периода времени после нарушения, прежде чем она потерпит крах. Например, указатель на освобожденную область памяти может быть сохранен и позже повторно использован, вызывая ошибку. В результате усилия сосредоточены на выявлении нарушений, когда они происходят, а не позже, когда проблема наблюдается. В таких системах, как CICS, нарушения хранения иногда обнаруживаются (ядром CICS) с помощью "подписей", которые можно проверить, были ли они наложены. Альтернативная библиотека времени выполнения может быть использована для лучшего обнаружения нарушений хранения, за счет дополнительных накладных расходов. Некоторые языки программирования используют проверку программных ограничений, чтобы предотвратить эти случаи. Некоторые программы для отладки также обнаруживают нарушения во время тестирования.
Частые причины
Беглый подскрипт, приводящий к незаконному использованию модификации ссылки во время выполнения. Несовпадение между элементами призыва и призывающими элементами. Использование ранее освобожденной (а иногда уже перераспределенной) памяти.