Вторая половина дня,
немного помогите, пожалуйста. Чтобы обойти ограничение объекта 2Gb в .NET, я создал класс, который выделяет память в куче, и это позволяет мне создавать массивы до предела моей свободной ОЗУ. Однако для простоты разработки (поскольку это было доказательством концепции) он был жестко закодирован для долгого времени. Теперь, когда он работает, я пытаюсь изменить код для использования дженериков, поэтому я могу использовать один и тот же код для нескольких типов.
При распределении памяти и правильном индексировании массива мне нужен массив указателей того же типа, что и массив, т.е. для длинного массива требуется long*[] myLargeArray
. Проблема в том, что когда я использую generics, это объявление становится T*[] myLargeArray
, которое всегда вызывает ошибку . Невозможно принять адрес, получить размер или объявить указатель на управляемый тип ('T') '
Спасибо заранее.
PS Прежде чем кто-нибудь спросит, да, мне действительно нужны такие большие массивы.
Пример кода для 2D-массива:
LargeArray <int> myArray = new LargeArray<int>(x, y);
public unsafe class LargeArray where T : struct
{
...
private T*[] tArr;
...
public LargeArray(long sizeI, long sizeJ)
{
...
myLargeArray = new T*[sizeI];
...
}
}