Problème tout bête... cherchez l'erreur

Résolu
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007 - 27 sept. 2006 à 18:18
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007 - 27 sept. 2006 à 23:37
Bonjour à tous, voilà, le programme suivant compile mais plante (avec devC++) et je ne sais pas du tout pourquoi, ca me perturbe :

#include <cstdlib>
#include

using namespace std;

int main(int argc, char *argv[])
{
    int longueur=512;
    int largeur=512;
    int repetition=5;
    float tableau[longueur*repetition][largeur*repetition];
    system("PAUSE");
    return EXIT_SUCCESS;
}

Si quelqu'un a la solution...
Merci

Vince

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 sept. 2006 à 20:01
Il ne faut JAMAIS tenter de mettre pareille taille de tableau sur la pile, il faut tenter une alloc dynamique (malloc ou new).

ciao...
BruNews, MVP VC++
3
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
27 sept. 2006 à 23:37
Merci, c'était bien un problème de taille... le problème est résolu en faisant une allocation dynamique du tableau (et en ramenant celui-ci à un tableau à 1 dimension)
Bonne soirée

Vince
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 sept. 2006 à 19:12
Les valeurs que tu donne pour la grosseur de ton tableau doivent être constantes. Dans ton exemple, il faudrait faire:

#include <cstdlib>
#include

using namespace std;

#define LONGEUR 512
#define LARGEUR 512
#define REPETITION 2

int main(int argc, char *argv[])
{
    int longueur=512;
    int largeur=512;
    int repetition=5;
    float tableau[LONGEUR*REPETITION][LARGEUR*REPETITION];

    system("PAUSE");
    return EXIT_SUCCESS;
}

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 sept. 2006 à 19:13
Oups. Supprimme:

int longueur=512;
int largeur=512;
int repetition=5;

de ta fonction main. Ils sont maintenant inutiles.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 sept. 2006 à 19:15
Quel étourdie je fais.

La valeur de REPETITION est 5 donc
#define REPETITION 5
et non 2.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 sept. 2006 à 20:48
Ouais.... c'est vrai que ça fait beaucoup.

Mais au fait, elle est de quelle taille, en moyenne, la pile d'un processus win32?

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 sept. 2006 à 21:56
The /STACK option sets the size of the stack in bytes. This option is only for use when building an .exe file.
This option specifies the total stack allocation in virtual memory. The default stack size is 1 MB. The linker rounds up the specified value to the nearest 4 bytes.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous