2012-08-15 1 views
1

Je reçois cette erreurMAX_INT atteint avant la limite définie dans climits.h

Error

chaque fois que je rentre quelque nombre plus grand que ce qui suit, dans un code compilé avec Microsoft Visual C++ 2010 Express:

int size = 276447232; 

Bien que, selon thisconversation, this one ou thatone, je devrais être en mesure d'aller jusqu'à 2147483646 avant de rencontrer un problème, non?

Sky

+0

Je ne pense pas que cette affectation provoquera 'abort()' .. comment la variable/valeur est-elle utilisée? En d'autres termes, existe-t-il une ligne * différente * qui déclenche l'erreur de débogage? –

+0

Salut pst, désolé pour le retard. En effet, j'utilise ce 'size' dans la ligne suivante: ' char * outputGwb = new char [taille]; '. Mais le fait est que cette erreur n'apparaît que lorsque je change le paramètre 'size' ... –

Répondre

1

Le programme tente d'allouer trop pile espace:

char *outputGwb = char[size]; // array is created "on the stack" 

Utilisez malloc (ou new en C++) pour allouer de la mémoire du tas . Assurez-vous de free (ou delete en C++) la mémoire plus tard; ne mélangez pas les stratégies d'allocation/désallocation.

char* outputGwb = new char[size]; // C++: note use of the "new" keyword 
char* outputGwb = malloc(size); // C: note no cast needed in a C compiler 

Cette question est donc de la taille maximale d'une ressource particulière et est pas lié au nombre maximal d'une valeur entière peut représenter. Voir What and where are the stack and heap? pour une explication entre les deux zones d'allocation de mémoire. En outre, bien que je ne le recommanderais pas forcément, voici un thread that discusses how to change the stack size in Visual C++.

+0

En effet, j'ai oublié de mentionner que je 'supprimer' la mémoire plus tard dans le code. Cependant, je ne comprends pas exactement le changement qu'il ferait: quelle est la différence entre _on la stack_ et _de heap_? –

+0

PS: Merci beaucoup –

+0

@ RobinLen'hog Il est très mauvais de supprimer (ou gratuitement) quelque chose qui n'était pas nouveau (ou mallocé) :) J'ai mis à jour le poste avec un lien vers une question à propos de la pile vs tas et des exemples ajoutés d'allocation de tas en C et C++. –

Questions connexes