[英]Jagged array pinning in c#
我有一個問題。 我正在嘗試固定一個鋸齒狀的數組(由於我要處理的數據量太大,我正在使用該數組):
public void ExampleCode(double[][] variables) {
int nbObservants = variables.Length;
var allHandles = new List<GCHandle>();
double*[] observationsPointersTable = new double*[nbObservants];
double** observationsPointer;
GCHandle handle;
for (int i = 0; i < nbObservants; i++) {
handle = GCHandle.Alloc(variables[i], GCHandleType.Pinned);
allHandles.Add(handle);
observationsPointersTable[i] = (double*) handle.AddrOfPinnedObject(); // no prob here
}
fixed(double** obsPtr = observationsPointersTable) { // works just fine
Console.WriteLine("haha {0}", obsPtr[0][0]);
}
handle = GCHandle.Alloc(observationsPointersTable, GCHandleType.Pinned); // won't work
allHandles.Add(handle);
observationsPointer = (double**) handle.AddrOfPinnedObject();
// ...
foreach (var aHandle in allHandles) {
aHandle.Free();
}
allHandles.Clear();
}
我需要在代碼的多個部分中使用這些double **,並且真的不想在每次使用它們時都明確地固定它們。 在我看來,當我可以通過常規的fixed語句修復它們時,我應該能夠為它們分配固定的句柄。
有什么方法可以實際固定double * []嗎?
顯然沒有辦法做到這一點。 因此,我決定使用固定語句而不是分配固定的句柄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.