【发布时间】:2020-01-19 01:21:09
【问题描述】:
我正在尝试更好地了解如何将内存固定到更长的时间。很明显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# .net memory garbage-collection