我正在閱讀有關託管代碼中的內存泄漏,並想知道是否有可能在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