使用C#指针

Ali*_*ini 11 .net c# pointers

c#如何利用指针?如果C#是托管语言并且垃圾收集器在防止内存泄漏和正确释放内存方面做得很好,那么在c#中使用指针会有什么影响以及它们的" 不安全 "是什么?

the*_*oop 6

要使用指针,您必须允许不安全的代码,并使用指针标记方法unsafe.然后,您必须修复内存中的任何指针,以确保垃圾收集器不会移动它们:

byte[] buffer = new byte[256];

// fixed ensures the buffer won't be moved and so make your pointers invalid
fixed (byte* ptrBuf = buffer) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这是不安全的,因为从理论上讲,您可以获取指针,遍历整个地址空间,并破坏或更改内部CLR数据结构,例如,更改方法实现.您无法在托管代码中执行此操作.