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 :

question sur malloc


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut question sur malloc
    coucou,

    voilà j'aurai un question (bete) sur la mémoire.

    pour afficher du texte à l'ecran (dans un jeu) j'utilise la bibliotheque SDL, si je veux afficher du texte j'ai une marche à suivre et je dois fournir un char (ou tableau de char). je transforme donc mon int en char avant de pouvoir l'afficher et je le stock dans un tableau

    puis je l'affiche à l'ecran (donc plus besoin du tableau). Or j'appele souvent cette fonction qui m'affiche du texte à l'ecran (pour mettre à jour le nombre de vie etc...) et je voulais savoir pour mon programme comment ca se passait au niveau de la mémoire (meme si 2 char ce n'est pas énorme...).

    Est ce qu'il utilise de la mémoire pour stocker mon premier nombre que je converti puis en utilise encore de la nouvelle quand je le change ? ou est ce qu'il ecrira toujours à la meme place?

    autre question (on y arrive ) :
    serait-il mieux que j'utilise malloc dans ce cas?
    (j'alloue 2 case puis je fais un free à chaque fois) ?

    merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Bonjour,

    Il serait peut-être judiceux, de faire un malloc à la première utilisation et un free à la fin de la dernière, en faisant attention à la manipulation du tableau entre les coups...
    Ceci dit, pour un tableau de 2 char...

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Si tu utilises char TempChar[2];, les deux octets sont placés sur la pile en début de fonction, et retirés à la fin.

    Cela est beaucoup plus rapide qu'une allocation dynamique, et à recommander pour tous les petits buffers de taille fixe.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Elstak
    pour afficher du texte à l'ecran (dans un jeu) j'utilise la bibliotheque SDL, si je veux afficher du texte j'ai une marche à suivre et je dois fournir un char (ou tableau de char). je transforme donc mon int en char avant de pouvoir l'afficher et je le stock dans un tableau

    Est-tu bien conscient qu'avec un tableau de 2 char, la valeur (en décimal) ne peut être que de 0 à 9...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Si tu utilises char TempChar[2];, les deux octets sont placés sur la pile en début de fonction, et retirés à la fin.

    Cela est beaucoup plus rapide qu'une allocation dynamique, et à recommander pour tous les petits buffers de taille fixe.
    ok merci, je laisse comme ca alors

    Est-tu bien conscient qu'avec un tableau de 2 char, la valeur (en décimal) ne peut être que de 0 à 9...
    oui, merci quand meme de me l'avoir fait remarquer !
    sinon juste par curiosité... si je declare un tableau de taille 1 j'arrive quand meme à stocker une valeur, pourtant y'a bien un \0 ?? (c'est bien pour ca que tu me dis ca.... je peux mettre un chiffre et \0 dans un tableau de 2 cases )
    je comprend pas trop pourquoi j'arrive à stocker 1 chiffre dans un tab de taille 1... il comprend que j'ai besoin de la place et l'agrandi d'une case sans le dire? (le coquin )

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Elstak
    sinon juste par curiosité... si je declare un tableau de taille 1 j'arrive quand meme à stocker une valeur, pourtant y'a bien un \0 ?? (c'est bien pour ca que tu me dis ca.... je peux mettre un chiffre et \0 dans un tableau de 2 cases )
    je comprend pas trop pourquoi j'arrive à stocker 1 chiffre dans un tab de taille 1... il comprend que j'ai besoin de la place et l'agrandi d'une case sans le dire?
    Non, absolument pas.

    Le C est un langage pour programmeurs qui savent ce qu'ils font. Ecrire au-delà des limites d'un tableau invoque un comportement indéfini. C'est aussi simple que ça.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    ok merci

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

Discussions similaires

  1. question sur malloc (je dois le recoder)
    Par lludol dans le forum C
    Réponses: 10
    Dernier message: 31/01/2014, 09h00
  2. une question sur malloc()
    Par marocleverness dans le forum C
    Réponses: 5
    Dernier message: 02/05/2006, 20h26
  3. question sur malloc
    Par MegaNono dans le forum C
    Réponses: 15
    Dernier message: 01/05/2006, 14h24
  4. Question sur malloc
    Par mikedavem dans le forum C
    Réponses: 4
    Dernier message: 14/04/2006, 08h22
  5. Encore une question sur malloc
    Par IG88 dans le forum C
    Réponses: 5
    Dernier message: 23/06/2004, 15h35

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