Когда требуется закрепление с помощью оператора fixed ()? Я вижу много примеров, в том числе от Microsoft :
public class Win32API {
[DllImport("User32.Dll")]
public static extern void GetWindowText(int h, StringBuilder s,
int nMaxCount);
}
public class Window {
internal int h; // Internal handle to Window.
public String GetText() {
StringBuilder sb = new StringBuilder(256);
Win32API.GetWindowText(h, sb, sb.Capacity + 1);
return sb.ToString();
}
}
Что мешает сборщику мусора перемещать объект StringBuilder во время вызова GetWindowText (), и почему они не закрепляют sb с помощью оператора fixed ()?