Compartir a través de


Solución de problemas de excepciones: System.AccessViolationException

Cuando se intenta leer o escribir en la memoria protegida, se produce una excepción AccessViolationException.

Sugerencias asociadas

  • Asegúrese de que la memoria a la que intenta obtener acceso se haya asignado.
    La administración automática de la memoria es uno de los servicios que proporciona Common Language Runtime. Es posible que desee desplazarse al código administrado para aprovechar este servicio. Para obtener más información, vea Administración de memoria automática.

  • Asegúrese de que la memoria a la que intenta obtener acceso no esté dañada.
    Si se han realizado varias operaciones de lectura o escritura con punteros no válidos, es posible que la memoria esté dañada.

Comentarios

Se produce una infracción de acceso en código no administrado o no seguro cuando éste intenta leer o escribir en memoria que no se ha asignado o a la que no tiene acceso. No todas las lecturas o escrituras con punteros no válidos llevan a infracciones de acceso; por lo tanto, una infracción de acceso suele indicar que se han realizado varias lecturas o escrituras con punteros no válidos y se ha dañado la memoria.

En código administrado, todas las referencias son válidas o nulas. Toda operación que intenta hacer referencia a una referencia nula en código comprobable produce una excepción NullReferenceException.

Cuando se produce una infracción de acceso en código administrado no seguro, se expresa como una excepción NullReferenceException o AccessViolationException, dependiendo de la plataforma.

Las infracciones de acceso en código no administrado que ascienden a código administrado siempre se ajustan a una excepción AccessViolationException.

Vea también

Tareas

Cómo: Usar el Asistente de excepciones

Conceptos

Memory Management: Examples

Administración de memoria automática