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 d'allocation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Femme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 595
    Par défaut Erreur d'allocation
    Bonjour à tous!

    Je pensais maitriser l'allocation dynamique de la mémoire mais je suis tombé sur un problème que je ne comprends pas.

    Soit la structure suivante, avec ces deux méthodes associées:
    fir_mov_avrg_t * new_fir_mov_avrg(const uint32_t size)
    void destroy_fir_mov_avrg(fir_mov_avrg_t ** const pthis)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    typedef struct
    {
        float      * tab;
        uint32_t   size;
        uint32_t   wrptr;
        uint32_t   rdptr;
        float      n;
        float      acc;
        float      mean;
    }fir_mov_avrg_t;
     
     
    fir_mov_avrg_t * new_fir_mov_avrg(const uint32_t size)
    {
        fir_mov_avrg_t * this = malloc(sizeof(this));
        if(this)
        {
            memset(this,0,sizeof(*this));
            if((this->tab = calloc(size,sizeof(*(this->tab)))))
            {
                this->size  = size;
            }
            else
            {
                destroy_fir_mov_avrg(&this);
            }
        }
        return this;
    }/* end new_fir_mov_avrg*/
     
    void destroy_fir_mov_avrg(fir_mov_avrg_t ** const pthis)
    {
        if(pthis && *pthis)
        {
            fir_mov_avrg_t * this = *pthis;
            if(this->tab){free(this->tab);}
            free(this);
            *pthis = NULL;
        }
    }/* end destroy_fir_mov_avrg*/
    Lorsque j'appelle new_fir_mov_avrg(25) alors calloc échoue et renvoie NULL.

    Mais lorsque je commente la ligne memset(this,0,sizeof(*this)); calloc renvoie un pointeur valide....

    Je ne comprends pas pourquoi !

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fir_mov_avrg_t * this = malloc(sizeof *this);

  3. #3
    Membre très actif

    Femme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 595
    Par défaut
    NON! J'ai pas vu ca !
    Ca fait 2 heures que je suis dessus ! que ca crève les YEUX et que je ne voit rien !

    Le pire c'est que le soft tourne avec cette erreur grossière!!!

    Je vais changer le calloc en malloc, puisque le tableau sera déjà remplie de zero

    Merci !

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

Discussions similaires

  1. Erreur d'allocation mémoire - GTK+
    Par Jazzero dans le forum Débuter
    Réponses: 13
    Dernier message: 13/07/2009, 18h33
  2. C++, erreur d'allocation dynamique de mémoire
    Par YuGiOhJCJ dans le forum C++
    Réponses: 8
    Dernier message: 20/02/2009, 11h51
  3. Erreur d'allocation dynamique de tableaux
    Par lclclc dans le forum Fortran
    Réponses: 1
    Dernier message: 02/04/2008, 15h10
  4. erreur d'allocation de mémoire?
    Par ulnar dans le forum C
    Réponses: 17
    Dernier message: 18/05/2007, 09h36
  5. [Sécurité] Erreur d'allocation mémoire
    Par GLDavid dans le forum Langage
    Réponses: 4
    Dernier message: 28/04/2006, 08h34

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