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 :

Erreur windows lors du malloc


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Points : 11
    Points
    11
    Par défaut [Résolu] Erreur windows lors du malloc
    Bonjour, je rencontre un problème avec la fonction malloc
    en effet, j'ai besoin d'alloué dynamiquement beaucoup de zone mémoire
    et il se trouve que l'appel a la fonction plante (pas de retour d'erreur,plantage) au bout d'un certain nombre d'appel
    La seule chose que j'ai pus remarqué : c'est que le derniere appel de la fonction avant que son prochain plante me renvoi une taille alloué de 16 octets, alors qu'elle m'alloue 12 Octets normalement.
    Je n'ai pas encore pu tester le code sous linux, mais je suis sur que celui-ci marcherais, si quelqu'un a une idée de la raison de ce plantage (peut-être le heap qui part n'importe où, je ne sais pas trop) etsurtout une solution.
    Meci d'avance

    P.S : j'ai tester sous windows XP Pro et sous Windows 95 avec le compilateur bcc 5.5

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 38
    Points : 51
    Points
    51
    Par défaut
    Plutot pour la cat C.
    Sinon tu fais combien d'appel a malloc ? 1000, 10 000, 100 000 ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    C ou C++ ca reviens au meme vu que avec l'opérateur new, ca fait pareil
    (normal il utilise le malloc)

    sinon, j'en fais plus de 100 000, mais il plante avant d'en arrivé là
    si tu veux je créer une table de hachage par liste chainée du dictionnaire de la langue francaise (plus de 359000 mots de 1 à 26 caractères chacun)

    et ca marche très bien si j'alloue quasiment tout de facon statique (mais je pert bcp de mémoire en faisant ca, quelque Mo)

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    La seule chose que j'ai pus remarqué : c'est que le derniere appel de la fonction avant que son prochain plante me renvoi une taille alloué de 16 octets, alors qu'elle m'alloue 12 Octets normalement.
    Comment tu connais la taille allouée ?

    Poste du code.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    pour connaîte la taille de la zone mémoire qui a été allouée, il existe une fonction du <malloc.h> size_t _msize( void *memblock );

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <stdio.h>
    #include <malloc.h>
     
    void main()
    {
       char *toto;
       toto = (char*) malloc(sizeof(char)*26);
       printf("taille allouée : %d\n",_msize(toto));
    }
    P.S : cette fonction marche avec les méthode : realloc, malloc, calloc

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    J'ai résolu mon problème, je me suis appercu que le compilateur bcc 5.
    5 et le compilateur visual n'avait pas la même taille de bibliotheque malloc, alors j'ai tester avec le second, et maintenant ca marche.
    Donc avis a qui veut savoir, le compilateur borland c++ 5.5 a des bugs.

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

Discussions similaires

  1. erreur windows lors de l'exécution
    Par sandytarit dans le forum C
    Réponses: 14
    Dernier message: 08/11/2006, 17h00
  2. Erreur windows lors du lancement de mon appli delphi
    Par socooooool dans le forum Delphi
    Réponses: 10
    Dernier message: 17/07/2006, 16h34
  3. Erreur 82 lors d'installations sous windows XP
    Par steeves5 dans le forum Windows XP
    Réponses: 2
    Dernier message: 14/12/2005, 17h33
  4. Message d'erreur Windows lors de l'exécution de l'appli D6-
    Par kolac dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/12/2004, 17h55
  5. Erreur de sgmentation avec malloc
    Par simonm dans le forum C
    Réponses: 5
    Dernier message: 27/02/2003, 08h29

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