Я пытаюсь лучше понять, что нужно для закрепления памяти на более длительные периоды времени. Ясно, что GCHandle.Alloc(..., GCHandleType.Pinned)
- это то, что мне нужно использовать (более fixed(){}
).
Однако я надеялся, что смогу немного разъяснить его использование.
Если я выделю массив, а затем использую GCHandle
, чтобы закрепить его:
byte[] data = new byte[10];
GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned);
и если я манипулирую массивом data
следующим образом:
for(int i = 0; i < data.length; i++) {
data[i] = i;
}
продолжаю ли я работать с закрепленной областью памяти? Или я могу получить доступ к этой памяти только через функцию handle.AddrOfPinnedObject()
?
Я уверен, что это, вероятно, довольно простой вопрос c, но любая помощь будет принята с благодарностью!