Quelqu'un pourrait-il me dire quelle est la capacité de la pile en C #.
J'essaie de former un objet fermé maillé 3D en utilisant un tableau de 30 000 éléments.
La taille de pile par défaut pour une application .NET est de 1 Mo (la valeur par défaut est 256 Ko pour les applications ASP.NET 32 bits et 512 Ko pour les applications ASP.NET 64 bits), mais vous pouvez modifier cela. Pour l'application, vous pouvez modifier la taille par défaut en modifiant l'en-tête PE de l'exécutable. Pour les threads que vous créez, vous pouvez utiliser la surcharge du constructeur qui prend une taille de pile.
Mais comme le souligne Anton Tyjhyy dans sa réponse, les tableaux sont des types de référence et sont donc situés sur le tas (même si le tableau contient un tas de types de valeurs).
Votre tableau vivra sur le tas, la taille de la pile n'est pas pertinente dans votre cas.
La taille de la pile est configurable et peut être définie de plusieurs manières différentes .
Pour utiliser la pile pour stocker un tableau, vous devez utiliser du code dangereux avec des pointeurs et stackalloc pour allouer l'espace mémoire souhaité sur la pile.
Si vous souhaitez vérifier la valeur de votre assembly .NET actuel, vous pouvez le faire à l'aide de la commande ILDASM
fournie avec l'invite de commandes Visual Studio. Une fois que vous avez démarré l'outil, ouvrez votre assemblage puis allez dans le menu View -> Headers
. Faites maintenant défiler jusqu'à la section PE Optional Header (32 bit)
dans la fenêtre Headers
récemment ouverte. Vous verrez deux champs:
Cet espace est réservé dans le fichier d'échange du système d'exploitation afin que la pile puisse toujours être échangée si nécessaire.