En informática, una infracción de almacenamiento es una falla de hardware o software que ocurre cuando una tarea intenta acceder a un área de almacenamiento de la computadora a la que no está permitido acceder.
La infracción de almacenamiento puede consistir, por ejemplo, en leer, escribir o liberar almacenamiento que no es propiedad de la tarea. Un tipo común de violación del almacenamiento se conoce como desbordamiento del búfer de pila , donde un programa intenta exceder los límites establecidos para su pila de llamadas . También puede referirse a un intento de modificación de la memoria "propiedad" de otro subproceso donde la protección de la memoria es incompleta (o nula).
Pueden ocurrir violaciones de almacenamiento en sistemas de transacciones como CICS en circunstancias en las que es posible escribir en un almacenamiento que no es propiedad de la transacción; Estas violaciones se pueden reducir habilitando funciones como la protección del almacenamiento y el aislamiento de transacciones .
Las infracciones de almacenamiento pueden ser difíciles de detectar ya que un programa a menudo puede ejecutarse durante un período de tiempo después de la infracción antes de fallar. Por ejemplo, un puntero a un área de memoria liberada puede retenerse y luego reutilizarse provocando un error. Como resultado, los esfuerzos se centran en detectar violaciones a medida que ocurren, en lugar de hacerlo más tarde, cuando se observa el problema.
En sistemas como CICS, las violaciones de almacenamiento a veces son detectadas (por el kernel de CICS ) mediante el uso de "firmas", que pueden probarse para ver si se han superpuesto.
Se puede utilizar una biblioteca de tiempo de ejecución alternativa para detectar mejor las infracciones de almacenamiento, a costa de una sobrecarga adicional. [1] Algunos lenguajes de programación utilizan la verificación de límites de software para evitar estos sucesos.
Algunos programas de depuración de programas también detectarán infracciones durante las pruebas.