Necesito declarar matrices cuadradas en C# WinForms con más de 20000 elementos en una fila. Leí aproximadamente 2 GB de límite de tamaño de objeto .NET en 32 bits y también el mismo caso en el sistema operativo de 64 bits. Entonces, según entendí la única respuesta, es usar un código inseguro o una biblioteca separada construida con el compilador C++.C# gran tamaño matrices de 2 dim
El problema para mí vale la pena porque ushort [20000,20000] es más pequeño que 2GB pero en realidad no puedo asignar incluso 700MB de memoria. Mi límite es de 650 MB y no entiendo por qué: tengo WinXP de 32 bits con 3 GB de memoria. Intenté usar Marshal.AllocHGlobal (700 < < 20) pero arroja OutOfMemoryException, GC.GetTotalMemory devuelve 4.5MB antes de tratar de asignar memoria.
Solo encontré que muchas personas dicen usar código no seguro pero no puedo encontrar ejemplos de cómo declarar 2-dim array en el montón (cualquier pila no puede mantener una cantidad tan grande de datos) y cómo trabajar con punteros . ¿Es código puro de C++ dentro de {} corchetes inseguros?
PS. Por favor, no preguntes POR QUÉ necesito tantos arreglos ... pero si quieres, necesito analizar textos (por ejemplo, libros) y encontré muchos índices. Así que la respuesta es - matrices de relaciones entre las palabras
Edición: ¿Podría alguien proporcionar un pequeño ejemplo de trabajar con matrices usando punteros en el código inseguro. Sé que por debajo de 32 bits es imposible asignar más espacio, pero pasé mucho tiempo buscando en Google ese ejemplo y no encontré NADA
¿Por qué? ¿Que estás tratando de hacer? – SLaks
Pregunta relacionada http://stackoverflow.com/questions/1087982/ –
Agregué algunos enlaces al código de muestra a mi respuesta. –