Avec Borland C++, tu peux augmenter la limite de la pile dans les options du compilateur. Tu utilise un tableu de 300 000 valeurs, ce qui est enorme. Tu ne devrait pas le déclarer dans la pile (stack), mais tu devrai le déclarer dynamiquement avec new ou avec malloc :
#incldue <malloc.h> //Pour malloc() #include <stdlib.h> //Pour random()
#define max 34 //Valeur Max. #define min 4 //Valeur Min.
main() { int* Tableau = (int*) malloc(300000*sizeof(int)); for (x = 0 ; x < 300000 ; x++) Tableau[x] = random(max - min) + min; free(Tableau); //Ne pas oublier de desallouer le tableau }
Tu peux également utiliser une variable globale pour ton tableau, qui ne sera donc pas dans la pile mais dans le segment de code. Mais tu dois savoir qu'une variable globale c'est en général une mauvaise solution. Tu peux aussi remplacer malloc et free par new et Delete. La le code doit etre optimisé pour du c, tu peux essayer d'optimiser en assembleur aussi, mais je ne connais pas l'equivalent de ce code en asm. Si tu remplacer les constantes min et max, par des variables, pense a calculer max - min avant la boucle.
Blustuff.
------------------------------- Réponse au message : -------------------------------
Bonjour, mon pb est le suivant j'ai besoin de générer 300 000 nombres aléatoires et uniques (en borland c++ builder) en donnant deux bornes (nombre min et nombre max)
Cependant, à la génération, j'ai un débordement de pile. Comment faire pour éviter cela, et pour avoir un code optimiser ?
Merci
|