je ne comprend pas pourquoi le programme ci-dessous se termine parfois correctement, parfois avec une erreur de segmentation (core dumped).
int main()
{
double tab[1047575];
tab[0] = 0;
return 0;
}
Quelqu'un pourrait-il m'expliquer d'où vient le problème ?
Y-aurait-il une limitation de la taille des tableaux (8 Mo ?) ?
Merci d'avance
# mauvaise section
Posté par akno . Évalué à 1.
# Taille de pile
Posté par zeanmi . Évalué à 2.
http://www.squalenet.net/fr/ti/tutorial_c/15-allocation-dyna(...)
Pour une telle taille, il vaut mieux faire une allocation dynamique avec malloc (en C) ou new (en C++) et ne pas oublier évidemment de désallouer, plutôt que par exemple vouloir changer la taille maximale de la pile par une directive de compilation.
[^] # Re: Taille de pile
Posté par akno . Évalué à 2.
J'ai trouvé quelques explications à cette adresse http://www.developpez.net/forums/archive/index.php/t-110796.(...)
[^] # Re: Taille de pile
Posté par Krunch (site web personnel) . Évalué à 3.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: Taille de pile
Posté par Obsidian . Évalué à 3.
[^] # Re: Taille de pile
Posté par alf . Évalué à 1.
Une variable locale statique peut être utile. Mais il faut savoir quand l'utiliser et quand ne pas l'utiliser...
Si tu veux un problème lié aux variables statiques, il y en a un autre, plus grave : pas de pas de réentrance. I.e. pas de récursivité possible (tout du moins de manière "classique"), marche pas avec le multi-thread...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.