Taille maximum d une valeur

Signaler
Messages postés
24
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
5 juin 2006
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
bonjour a tous

je suis en train de faire un petit prog en c++ sous linux et j ai un petit prob ...

j aimerai savoir si cette declaration de variable : long int file[256][256][60]; n est pas trop grande ??
car j ai l impression qe c cette ligne qui me plante le prog meme si ca ne pose pas de pb pour la compilation alors que si mon file fait long int file[128][128][60]; ca ne pose pas de pb ca tourne tout seul

est ce q on peut avoir + grand mais en gardant des entiers !!

merci maloudre

12 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Je pense que déja ca dépend si tu le déclares en global ou en local. Si dans aucun des deux cas ca ne marche, tu devra utiliser de l'allocation dynamique (malloc ou new)
Messages postés
24
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
5 juin 2006

salut

c qoi la difference entre les 2 declarations il vaut mieux laquelle ??
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
La version locale va essayer de réserver l'espace sur la pile, et 15Mo sur la pile ca peut faire un peu trop. Avec file en variable globale ca marche pas?
Messages postés
24
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
5 juin 2006

ok
mais comment tu fais pour declarer en global concretement ??

pour l instant c declarer dans le main juste avant son utilisation
( car c un rajout de code ...)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
long int file[256][256][60];

int main()
{
...
}
Messages postés
5
Date d'inscription
mercredi 23 juin 2004
Statut
Membre
Dernière intervention
29 juin 2006

Les variables globales, c'est mal.
Mais pour eviter le stack overflow, pourquoi pas.

Perso, j'opterai pour une allocation dynamique.

Luther13
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Je veux bien que ce soit mal, mais pourquoi?
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Les variables globales c'est pas mal du tout. Ça permet d'avoir acces à des donnée a partir de n'inporte quel point dans ton programme. C'est pas juste pour une fonction, c'est pour tout le programme. Faut juste savoir comment ne pas en abuser pour ne pas gober la memoire vive.
Messages postés
24
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
5 juin 2006

bonjour a tous

alors voila

j ai essaye de faire ma declaration avec une variable globale

ca marche !!!

merci beaucoup

maloudre
Messages postés
24
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
5 juin 2006

alors voila

apres moulte et moulte essai
il s avere qe ca marcche toujours pas avec une taille superieur a 128*128*60
j ai essayer en declaration globale

par contre avec une allocation dynamique je lui rentre

main{
long int *file[i][j][k];
file[i][j][k]=new long int;

...

delete file;

avec i=j=256 k=100
avec pour idee d aller jusqu a 512*512*512
est ce que c bon ??
par ce qe ca compile mais le prog ne marche pas

merci maloudre
Messages postés
24
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
5 juin 2006

je reviens sur la declaration en global

qd je compile il me met une erreur : varible-size type declared outside of any function
donc ca ne marche pas non + !!!

je sais + qoi faire help !!!
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Normal, si tu mets i, j et k au lieu de mettre des constantes