基本上,内存损坏是由于覆盖了不应该覆盖的内存所引起的。我想知道在C#的不安全代码中是否可能发生这种情况(即不通过调用外部非托管代码)。我看到两种可能的情况:
- 访问空指针 -> 被CLR捕获,抛出NullReferenceException
- 访问指向无效随机内存位置的指针 -> 被CLR捕获,抛出AccessViolationException
var ptr = (int*)0; *ptr = 1; // throws NullReferenceException
。 - Asik