2

如果我得到一个指向数组第一个元素的指针,我是否可以超出数组范围并将任意数据写入 GC 堆内存,从而有效地破坏堆和垃圾收集器,或者是否有任何安全防护? CLR 反对这种混乱。

代码示例:

unsafe {
    int[] intArray = new int[100];
    fixed (int* ptr = intArray) {
        *(ptr - 42) = 456872;
    }
}

是否有可能以这种方式导致内存损坏,从而可能损坏 CLR 自己的数据结构?

4

0 回答 0