IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Grand tableau = Plantage ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Par défaut Grand tableau = Plantage ?
    Bonjour,

    Je dois créer un tableau de 600*200 dans un code en C. Seulement sur Windows mon programme plante dès l'exécution, tandis que sur Linux mon programme tourne correctement.

    J'imagine que c'est un problème avec la gestion de la mémoire. Une solution existe ?

    Merci !

  2. #2
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    montre ton code !

  3. #3
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    Au cas où, je préciserais qu'il vaut mieux éviter un tel tableau en statique. Un demande d'allocation dynamique au système via *alloc() mettrais moins à mal la pile.
    Ceci dit, comme le souligne Dark_Ebola, sans code, je tape peut être dans le vide...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Par défaut
    En ecrivant un code similaire, j'ai remarque qu'il plantait à partir du 3eme tableau...

    Ca doit donc être le fait que je manque de mémoire sur mon pc ? (512Mo)

    Pourtant :
    1 double = 8 Octets
    Donc = 8*601*301*4/1024² < 512 Mo

    Voici le code :

    int nx = 601 ;
    int ny = 201 ;

    int main(void) {
    double tableau[nx][ny], tableau1[nx][ny], tableau2[nx][ny], tableau3[nx][ny] ;
    int i, j ;
    for(i = 0 ; i < nx ; i++) {
    for(j = 0 ; j < ny ; j++) {
    tableau[i][j] = 10 ;
    }
    }
    printf("%f \n",tableau[i][j]) ;
    scanf("...") ;
    }

  5. #5
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    Neitsa avait vut juste, tes tableaux sont sur la pile.

    il faut les mettre sur le tas
    utilise un *alloc (malloc//calloc) pour allouer tes tableaux sur le tas.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Par défaut
    Ok je vais un peu me renseigner la dessus.

    Juste une question, pourquoi sous linux ca ne plante pas ?

    En tout cas merci.

  7. #7
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    parce que par defaut la taille de la stack sous linux est de 8Mo
    tu peux le verifier (et meme le changer) en tappant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. grand tableau dans un petit div
    Par zais_ethael dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/03/2006, 14h12
  2. Question l'utilisation d'un grand tableau en JS
    Par steelidol dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/03/2006, 21h01
  3. Charger un grand tableau de données
    Par benj63 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/02/2006, 17h21
  4. decalage à gauche sur une tres grand tableau de char
    Par petitours dans le forum C++Builder
    Réponses: 10
    Dernier message: 14/07/2005, 22h40
  5. Déclarer un (très) grand tableau?
    Par Cheos dans le forum C++
    Réponses: 8
    Dernier message: 17/02/2005, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo