基本上,内存损坏是由覆盖你不应该覆盖的内存引起的。我想知道这是否可能在 C# 中使用不安全的代码(即不是通过调用外部非托管代码)。我看到两种可能的情况:
- 访问空指针 -> 被 CLR 捕获,抛出 NullReferenceException
- 访问指向无效随机内存位置的指针 -> 被 CLR 捕获,抛出 AccessViolationException
在这两种情况下,运行时似乎都会检测并防止发生潜在的内存损坏。因此,是否有可能使用不安全的代码从 C# 中破坏内存?作为推论,从不安全的代码中捕获 AccessViolationExceptions 是否安全?