收集不安全的C#垃圾

Bal*_*i C 4 c# garbage-collection memory-leaks

我正在阅读托管代码中的内存泄漏,并想知道是否可以在C#unsafe代码中创建它?

unsafe
{
    while(true) new int; 
}
Run Code Online (Sandbox Code Playgroud)

我不确定如果它作为不安全的代码运行,是否会被GC捕获?

谢谢

SLa*_*aks 10

unsafe关键字只允许你使用不安全的代码(指针).

它根本不会改变普通代码的语义.


luk*_*szk 7

IMO unsafe仅允许在内存上使用指针类型和proform C++样式指针opeartion.但告诉垃圾收集器不要触摸我的代码使用固定语句.

C#支持通过标记为不安全的代码块内的指针进行直接内存操作,并使用/ unsafe编译器选项进行编译.

固定语句被用来告诉垃圾收集器别碰与圆润的代码固定的声明

   unsafe
    {
       fixed (int* a = &b)   // tells garbage collector not touch 
       {
         *a = 9;
       }    
    }
Run Code Online (Sandbox Code Playgroud)