Во-первых, базовая информация о нашей среде: мы используем c # .net 4.0 на Win7-x64 для 32-битного.
У нас есть предварительно выделенный массив -large-.В функции мы хотели бы вернуть указатель на произвольную точку в этом массиве, чтобы вызывающая функция могла знать, куда писать.Пример:
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 [], но пытающийся вернуть одно байтовое значение.
Спасибо