首先,我们的环境的基本信息:我们在Win7-x64上使用c#.net 4.0,目标是32位。我们有一个预分配的大数组。在一个函数中,我们想返回一个指向这个数组中任意点的指针,这样调用函数就可以知道在哪里写入。例:如何获取指向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函数不正确;它被声明为返回字节[],但试图返回单个字节值。
感谢
为什么要那样做? – Femaref 2011-02-02 15:09:18