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++Builder Discussion :

EStackOverflow : Débordement de pile dû à un trop gros buffer


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut EStackOverflow : Débordement de pile dû à un trop gros buffer
    Bonjour,

    J'utilise dans mon programme la fonction fopen, puis, fread d'un fichier de 1mo (un peu passé) mais lorsque j'utilise la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fread(monbuffer, 1277538, 1, stream);
    sachant que j'ai initialiser mon buffer de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     unsigned char monbuffer[1277538];
    , j'obtient une erreur : "EStackOverflow : Débordement de pile".
    J'ai essayé d'utiliser la fonction alloca, mais ça ne donne aucun resultat.

    Merci de m'aider

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Par défaut
    ben je crois que il y'a la solution de modifié la taille de la pile mais je me rappel pas comment.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut
    J'ai trouvé la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unsigned char *buffer;
    buffer = (char *) malloc(1277538); //1277538 bytes (=octets) alloués

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    (gros) Détail: n'oublie pas de faire un free(buffer) à la fin sinon tu auras des fuites de mémoire.

    Sinon, en C++ il est conseillé d'utiliser new et delete à la place de malloc/free:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char* buffer;
    buffer=new char(1277538);
    if (buffer) {
      try {
        // ton code ici
      }
      __finally {
        delete buffer;
        buffer=NULL;
      }
    }
    ou avec new[] et delete[]:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char* buffer;
    buffer=new char[1277538];
    if (buffer) {
      try {
        // ton code ici
      }
      __finally {
        delete[] buffer;
        buffer=NULL;
      }
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Par défaut
    Merci de ce (gros) détail

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

Discussions similaires

  1. Débordement de pile
    Par portu dans le forum Delphi
    Réponses: 9
    Dernier message: 28/06/2006, 13h58
  2. [Outlook express 6] Refuser un message car trop gros ?
    Par Évariste Galois dans le forum Outlook Express / Windows Mail
    Réponses: 6
    Dernier message: 24/10/2005, 19h02
  3. Fichier texte trop gros pour etre ouvert
    Par tavman dans le forum C++
    Réponses: 5
    Dernier message: 05/10/2005, 00h07
  4. ResultSet trop gros : OutOfMemoryException
    Par samsam05 dans le forum JDBC
    Réponses: 4
    Dernier message: 03/05/2005, 11h34
  5. pb avec les résultats trops gros
    Par nisaes dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/01/2005, 10h44

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