Нарушение хранилища - Storage violation

В вычисление а нарушение хранения это аппаратное или программное обеспечение вина это происходит, когда задача пытается получить доступ к области компьютерное хранилище к которому не разрешен доступ.

Типы нарушения хранения

Нарушение хранилища может, например, состоять из чтения, записи или освобождения хранилища, не принадлежащего задаче. Распространенный тип нарушения памяти известен как переполнение буфера стека где программа пытается выйти за пределы, установленные для ее стек вызовов. Это также может относиться к попытке модификации памяти, «принадлежащей» другому потоку, при которой имеется неполная (или нет) защита памяти.

Избежание нарушений хранения

Нарушения хранения могут происходить в системах транзакций, таких как CICS в обстоятельствах, когда возможна запись в хранилище, не принадлежащее транзакции; такие нарушения можно уменьшить, включив такие функции, как защита хранения и изоляция транзакции.

Обнаружение нарушений хранения

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

В таких системах, как CICS, иногда обнаруживаются нарушения памяти (CICS ядро ) с помощью «подписей», которые можно проверить, чтобы увидеть, были ли они наложены.

Альтернативная библиотека времени выполнения может использоваться для лучшего обнаружения нарушений памяти за счет дополнительных накладных расходов.[1]Некоторые языки программирования используют программное обеспечение проверка границ чтобы предотвратить эти случаи.

Некоторая программа отладка программное обеспечение также обнаружит нарушения во время тестирования.

Общие причины

  • Неудержимый нижний индекс, ведущий к незаконному использованию модификации ссылки во время выполнения.
  • Несоответствие компоновки связей между вызываемыми и вызывающими элементами.
  • Использование ранее освобожденной (а иногда уже перераспределенной) памяти.

Примеры программного обеспечения, обнаруживающего нарушения памяти

Смотрите также

Рекомендации

  1. ^ "Отладка библиотеки Malloc". Dmalloc - Отладка библиотеки Malloc. Получено 2017-04-26.

внешняя ссылка