Partager via


Dépannage des exceptions : System.AccessViolationException

Une AccessViolationException est levée lors d'une tentative de lecture ou d'écriture de données dans une mémoire protégée.

Conseils associés

  • Assurez-vous que la mémoire à laquelle vous tentez d'accéder a été allouée.
    La gestion automatique de la mémoire est un des services que le Common Language Runtime fournit. Vous pouvez souhaiter passer à du code managé pour tirer parti de ce service. Pour plus d'informations, consultez Gestion automatique de la mémoire.

  • Assurez-vous que la mémoire à laquelle vous tentez d'accéder n'a pas été endommagée.
    Si plusieurs opérations de lecture et d'écriture ont été effectuées par le biais de pointeurs erronés, la mémoire peut être endommagée.

Notes

Une violation d'accès se produit en code non managé ou unsafe lorsqu'il tente de lire ou d'écrire dans une mémoire qui n'a pas été allouée, ou à laquelle il n'a pas accès. Toutes les opérations de lecture ou d'écriture avec des pointeurs erronés ne provoquent pas des violations d'accès, une violation d'accès indique donc habituellement que plusieurs opérations de lecture ou d'écriture ont été exécutées par le biais de pointeurs erronés et que cette mémoire est peut-être endommagée.

En code managé, toutes les références sont valides ou null. Toute opération qui tente de référencer une référence null dans du code vérifiable lève NullReferenceException.

Une violation d'accès qui se produit dans du code managé unsafe peut être exprimée comme une NullReferenceException ou une AccessViolationException, selon la plateforme.

Les violations d'accès dans du code non managé qui se propagent dans du code managé sont toujours encapsulées dans une AccessViolationException.

Voir aussi

Tâches

Comment : utiliser l'Assistant Exception

Concepts

Memory Management: Examples

Gestion automatique de la mémoire