我正在阅读有关托管代码中的内存泄漏,并想知道是否有可能在C#不安全的代码中创建它?是不安全的C#垃圾收集
unsafe
{
while(true) new int;
}
我不确定这是否会被GC捕获,如果这是作为不安全的代码运行?
感谢
我正在阅读有关托管代码中的内存泄漏,并想知道是否有可能在C#不安全的代码中创建它?是不安全的C#垃圾收集
unsafe
{
while(true) new int;
}
我不确定这是否会被GC捕获,如果这是作为不安全的代码运行?
感谢
的unsafe
关键字只允许你使用不安全的代码(指针)。
它根本不会改变普通代码的语义。
IMO不安全只允许在内存中使用指针类型和proform C++风格指针操作。但要告诉垃圾收集器不要碰我的代码,用修复声明。
C#支持通过代码块内的指针进行直接内存操作,该代码块标记为 不安全并使用/ unsafe编译器选项进行编译。
的固定语句被用来告诉垃圾收集器别碰与固定声明
unsafe
{
fixed (int* a = &b) // tells garbage collector not touch
{
*a = 9;
}
}
对啊,这真的很有帮助,谢谢。 +1 –
我喜欢在代码段的每一个关键字是如何突出的蓝色圆形的代码。 – BoltClock
这不会编译;它缺少括号。另外,'int'是一个不好的例子,因为它是一个值类型。 – SLaks
+1这似乎是一个合理的问题。为什么倒票? – Daryl