簡體   English   中英

C#中的鋸齒狀數組固定

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM