J'ai fait du code dans C impliquant des tableaux de caractères locaux, mais j'ai lu que si la taille des tableaux est trop élevée, un défaut de segmentation peut se produire.
Dans mon code, j'ai inclus la ligne suivante: P > et j'ai également ajouté dans la section de sortie: p> printf ("% d", Taille_max); P> lors de l'exécution, je vois A -1 qui me suggère illimité. p> I, passez ensuite dans une console et vérifiait mes limites: p> et je vois beaucoup "illimité" '' s. P> suis-je en train de regarder au bon endroit pour définir la taille maximale autorisée pour un tableau []? Si oui, quelle valeur dois-je modifier? P> p>
3 Réponses :
Vous devez modifier la taille code> pile code>. sur votre système actuellement il est 4 mégaoctets. P> -S CODE> est la possibilité de définir la taille de la pile à l'aide de
ulimit code>.
ulimit -s unlimited
//sets stack size to ulimited
PrintF vous montre un -1 code> car le format de
% d code> est un entier signé plus petit que non signé (généralement à 1 bit). Fonction Les matrices de caractères locaux vont sur la pile de sorte que c'est la valeur que vous recherchez. P>
Linux dispose d'un gestionnaire de mémoire virtuel qui allouera des blocs au besoin, des blocages d'échange sur le disque et d'essayer de faire ressembler le système, il n'y a pas de limite de pré-définie à la quantité de mémoire que vous pouvez attribuer à une tâche spécifique. Mais c'est comme une carte American Express avec "Aucune limite de dépenses pré-définie". Si vous essayez de charger une Ferrari, ils vont vous appeler et demander «WTF?». En réalité, toute la mémoire est finie et des tours de mémoire échoueront à un moment donné. Malheureusement, il n'y a pas de moyen pratique de savoir ce que ce point est à l'avance. Cela dépend de quoi d'autre fonctionne sur le système, la taille et la vitesse de votre disque, les paramètres du système d'exploitation et d'autres choses. P>
Dans la pratique, l'allocation d'un tableau proche de la quantité de RAM physique dans la machine est susceptible de causer des problèmes (ralentissements, si rien d'autre). Donc, cela pourrait être une limite raisonnable à considérer. Les fichiers mapé peut être une autre chose à prendre en compte, mais la réalité s'immisce sur leur performance également à un moment donné. P>
Le système ne clignote pas lorsque vous allouerez un tableau près de la quantité de mémoire physique. C'est lorsque vous l'utilisez que des effets sont remarqués.
Tant que ce n'est pas sur la pile. Le tableau doit être indexable alors je pense que
taille_max code> est la limite.
Dans les limites, la ligne que vous vous souciez est
Taille de la pile code> qui indique que la taille maximale de la pile est de 4096 kilo-octets, c'est-à-dire 4 mégaoctets.