yepla75
Messages postés34Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention13 juin 2007
-
1 mars 2007 à 15:26
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
1 mars 2007 à 17:55
Hello,
Je développe avec Dev-CPP ; dans un programme en C, je devais créer de très gros tableaux (je n'ai plus la taille en tête, malheureusement) => impossible.
Pour y remédier, j'ai fait le même programme en .cpp, avec la commande "new" pour créer le gros tableau, et ça a marché.
D'où les questions :
- la taille maximum d'un tableau est-elle liée au C, ou au compilateur ?
- y'a-t-il une commande permettant de connaître cette taille ?
- pourquoi le même programme écrit en .cpp a-t-il marché avec la commande "new" ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 1 mars 2007 à 15:34
La taile maxi est fonction de ce dont dispose le système au moment où on demande l'alloc dynamique.
Dans tous les cas sous Windows, c'est un peu moins de 2 Go sur Win32 et en teras sur Win64.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 1 mars 2007 à 16:43
char tab[xxx];
n'est pas une ALLOCATION mais une réservation sur la pile (sub esp, xx) et comme tu dépasses de très loin la taille de la pile c'est badaboum.
Prends par habitude demander une alloc mémoire au dessus de 2Ko, ça évite tout problème.
yepla75
Messages postés34Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention13 juin 2007 1 mars 2007 à 16:14
Je ne comprends pas bien...
Mon allocation initiale était statique, i.e. "char tab[4000000000]" par exemple (me rappelle plus la taille) => plantage à l'exécution ; en faisant le même prog en .cpp avec "new tab[4000000000]" je crois, ça marchait bien.
J'ai compris ta réponse à propos de l'alloc dynamique ; mais pour l'allocation statique ? Le système ne travaille-t-il pas de la même manière ? Pourquoi dans un cas ça marche et pas dans l'autre ?
Et dans le cas de l'alloc statique, y ' a-t-il un moyen de connaître la taille max ?