Tableau statique de taille importante -> seg fault

Signaler
Messages postés
257
Date d'inscription
dimanche 22 août 2004
Statut
Membre
Dernière intervention
29 septembre 2010
-
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
-
Bonjour à tous,


Je rencontre un problème pour le moins bizarre concernant des tableaux statique de "grande" taille en 3D.

Voilà deux codes :

double f[100][100][30];
cout << f; //fonctionne

double f[100][100][300];
cout << f; //fonctionne pas : erreur de segmentation

je suis donc pour le moins perplexe...qu'il n'arrive pas à allouer la mémoire va encore, mais qu'il n'arrive pas à afficher le pointeur, là...
Je compile avec gcc sans aucun flag sur une machine linux possédant assez de mémoire.

Je vous remercie pour les réponses

2 réponses

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut
Il faut passer à l'allocation dynamique de la mémoire pour les gros tableaux.
A+


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
C'est normal. Ton programme aurait aussi planté, si tu avais essayé d'afficher f[0][0][0]. Tu n'as pas assez de mémoire et toutes opérations sur ton tableau peut provoquer une erreur.
Comme l'a dit Pistol_Pete, dès le moment ou tu as besoin de beaucoup de mémoire, tu dois le faire en dynamique. Qui plus est, en C++, il existe plein de conteneur déjà disponible (std::vector, std::list, ...), et il y en a aussi dans boost. C'est donc très rare en C++, d'utiliser ce genre de tableau.

PS: Évite les using namespace std, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace

________________________________________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question