Capacidad de stack en C #

Podría alguien decirme cuál es la capacidad de la stack en C #.

Estoy tratando de formar un objeto cerrado de malla 3D usando una matriz de 30,000 elementos.

El tamaño de stack predeterminado para una aplicación .NET es de 1 MB (el valor predeterminado es 256 KB para las aplicaciones ASP.NET de 32 bits y 512 KB para las aplicaciones ASP.NET de 64 bits), pero puede cambiar eso. Para la aplicación puede cambiar el tamaño predeterminado modificando el encabezado PE del ejecutable. Para los hilos que cree, puede usar la sobrecarga del constructor que toma un tamaño de stack.

Pero como señala Anton Tyjhyy en su respuesta, las matrices son tipos de referencia y, por lo tanto, ubicadas en el montón (incluso si la matriz tiene varios tipos de valores).

Su matriz vivirá en el montón, el tamaño de la stack es irrelevante en su caso.

El tamaño de la stack es configurable y se puede configurar de diferentes maneras .

Para usar la stack para almacenar una matriz, debe usar un código inseguro con punteros y stackalloc para asignar el espacio de memoria deseado en la stack.

Si desea verificar el valor de su ensamblado .Net actual, puede hacerlo utilizando el comando ILDASM que viene con el símbolo del sistema de Visual Studio. Una vez que haya iniciado la herramienta, abra su ensamblaje y luego vaya a View -> Headers menú View -> Headers . Ahora desplácese hacia abajo a la sección PE Optional Header (32 bit) en la ventana de Headers recién abierta. Verás dos campos:

  1. Tamaño de la reserva de la stack: esto se explica por sí mismo. Este es el tamaño predeterminado de memoria de stack asignado a cualquier subproceso que se crea en su progtwig / aplicación.
  2. Tamaño de la apuesta de la apuesta: el espacio de la stack comprometida es – (Citando a Hans Passant desde aquí )

Dicho espacio está reservado en el archivo de paginación del sistema operativo para que la stack siempre se pueda intercambiar cuando sea necesario.

enter image description here