まず、私たちの環境に関する基本情報:Win7-x64では32ビットをターゲットとしたc#.net 4.0を使用しています。Cで配列の途中にポインタを移動する方法
事前に割り当てられた大型配列があります。ある関数では、この配列の任意の点へのポインタを返すので、呼び出し関数はどこに書き込むべきかを知ることができます。例:
class SomeClass {
void function_that_uses_the_array() {
Byte [] whereToWrite = getEmptyPtrLocation(1200);
Array.Copy(sourceArray, whereToWrite, ...);
}
}
class DataProvider {
int MAX_SIZE = 1024*1024*64;
Byte [] dataArray = new Byte[MAX_SIZE];
int emptyPtr=0;
Byte[] getEmptyPtrLocation(int requestedBytes) {
int ref = emptyPtr;
emptyPtr += requestedBytes;
return dataArray[ref];
}
}
は基本的に、我々は、このメモリブロックのメモリの大きな塊、及び予備任意の長さの部分を事前に割り当てると、他のいくつかのクラス/関数は、メモリの一部を使用するようにしたいです。
上記の例では、getEmptyPtrLocation関数が正しくありません。 Byte []を返すものとして宣言されていますが、1バイトの値を返そうとしています。アンマネージコードに行かなくても
おかげ
を使用することができますか? – Femaref