2016-08-23 3 views
-2

Je déclare un tableau avec une longueur définie par une variable. Lorsque la valeur de la variable est 5 cela fonctionne bien mais quand c'est la taille dont j'ai besoin (environ 52000) ce n'est pas le cas, cependant quand je n'utilise pas la variable pour déclarer la taille mais la saisir manuellement . (ne fonctionnera pas une fois que j'utiliser mon programme pour autre chose que le débogage). De ceci je peux conclure que ce n'est pas la taille du tableau qui fait planter mon programme ou employer une variable, mais en utilisant d'une manière ou d'une autre la même variable que celle qui fonctionne mais avec une valeur différente. J'ai même essayé d'utiliser un pointeur au lieu de la variable mais cela n'a pas fonctionné. La ligne de code précise est int half1[half];. Le processus renvoie -1073741571.Pourquoi mon programme C++ se bloque-t-il lorsque je déclare un tableau de cette façon?

+0

Vous ne devriez pas pouvoir utiliser une variable pour la taille dans votre déclaration de tableau, seules les variables 'const' peuvent être utilisées comme taille. –

+3

Plate-forme? Compilateur? Actual [MCVE] (https://stackoverflow.com/help/mcve)? – Useless

+1

Si vous avez besoin d'un tableau et que vous ne savez pas quelle sera la taille avant l'exécution, utilisez un 'std :: vevctor'. – NathanOliver

Répondre

2

Vous êtes-vous déjà demandé ce que signifie le nom de ce site? Vous pouvez être en train de vous attaquer exactement à un tel problème en déclarant un grand tableau sur la pile. D'ailleurs je suppose que vous utilisez GNU gcc. Normalement les tableaux de taille non-const ne sont pas valides C/C++ et vous ne compilerez pas ce code avec d'autres compilateurs. Pour les deux raisons, vous devez définir votre tableau sur le tas (avec le nouveau mot-clé) ou simplement utiliser std :: vector.

+2

Vous ne pouvez pas utiliser 'std :: array' pour les mêmes raisons que vous ne pouvez pas utiliser' int foo [run_time_determined_size]; '. – NathanOliver

+0

@NathanOliver Merci, corrigé – jszpilewski