float **ThreadID;
int Nthreads;
C#で以下のタスクを実行するには?
ThreadID = (float **)malloc( Nthreads* sizeof(float *) );
float **ThreadID;
int Nthreads;
C#で以下のタスクを実行するには?
ThreadID = (float **)malloc( Nthreads* sizeof(float *) );
アプリケーションにアンマネージ メモリが必要な理由はありますか? そうでなければ、それを行う通常の方法は
ThreadID = new float*[Nthreads];
これにより、新しい配列が割り当てられます。頻繁に呼び出される関数でこの種のステートメントを使用する場合は、stackalloc-キーワードを追加することをお勧めします。そうしないと、ガベージ コレクションが遅くなり、メモリ消費量が増加する可能性があります。stackalloc を使用すると、スタックに格納され、関数を終了すると他のローカル変数として破棄されます。
ThreadID = stackalloc float*[Nthreads];
編集: C# のすべてのポインターと同様に、関数の unsafe コンテキストを次のように宣言する必要があります。
unsafe int doSomething(){
...
}
float[][] ThreadId;
int NThreads;
ThreadId = new float[Nthreads][];