que quería probar a asignar una matriz de bytes 4 mil millones y este es mi código C#:¿Por qué se permite "largo" como longitud de matriz en C#?
long size = 4 * 1000;
size *= 1000;
size *= 1000;
byte[] array = new byte[size];
este código falla con System.OverflowException
en la línea que contiene new
. De acuerdo, resulta Length
devuelve int
, por lo que la longitud de la matriz también se limita a lo que int
puede almacenar.
Entonces, ¿por qué no hay error de tiempo de compilación y long
se puede utilizar como el número de elementos de la matriz en la asignación?
'Array.CreateInstance()' da el mensaje de error más significativo, "no se admiten matrices más grandes de 2 GB." –
Así que está asignando 3.7 GB de memoria. ¿Cuánta RAM está instalada en su máquina? : D – konqi
JoSo, la cantidad de memoria física no tiene importancia allí. – Joey