C #: usando um genérico para criar uma matriz de ponteiro
Tarde a todos
uma ajudinha, por favor. A fim de contornar o limite de objeto de 2Gb no .net eu fiz uma classe que aloca memória no heap e isso me permite criar matrizes até o limite da minha RAM livre. No entanto, para facilitar o desenvolvimento (como se fosse uma prova de conceito), ele foi codificado para longs. Agora que funciona, estou tentando alterar o código para usar genéricos para que eu possa usar o mesmo código para vários tipos.
Ao alocar a memória e indexar corretamente a matriz, eu preciso de uma matriz de ponteiros do mesmo tipo que a matriz irá conter, ou seja, uma longa matriz precisalong*[] myLargeArray
. O problema é quando eu uso genéricos essa declaração se tornaT*[] myLargeArray
, que sempre produz o erro'Não é possível obter o endereço, obter o tamanho ou declarar um ponteiro para um tipo gerenciado (' T ')'
Desde já, obrigado.
PS Antes que alguém pergunte, sim eu realmente preciso de matrizes tão grandes.
Exemplo de código para um array 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];
...
}
}