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 :

Effacer un tableau


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut Effacer un tableau
    Bonjour a tous,
    voila j'ai une question simple, mais à laquel je ne trouve pas de réponse. voila en fait j'ai un tableau de 256 caractère. dedans j'y stocke des données.
    ma question est simple, comment faire pour vider le contenu du tableau?
    j'ai essayer avec free(), mais cela n'a aucun effet.
    Merci par avance.
    Bob

  2. #2
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    Salut

    Ton tableau est dynamique (malloc()...) ? Dans ce cas, c'est bien free() qu'il faut utiliser. Par contre, si c'est un tableau automatique, je crois bien qu'il n'y a rien à faire en C pour libérer la mémoire.
    Par contre, si "vider" veut dire "effacer" mais garder l'espace mémoire, il suffit de faire :
    mais bon, je vois pas trop l'utilité.

    Nas'

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    non justement mon tableau n'est pas dynamique c'est tout la le problème !
    et sinon y a pas un moyen autre que par free() d'effacer le tableau ?
    même pas une petite bidouille ?

  4. #4
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    J'ai édité ma première réponse. Ca dépend de ce que tu veux dire par "effacer". Si c'est libérer la mémoire, non, tu ne peux rien faire. C'est le programme qui gère la mémoire de tout ce qui est mis dans la pile (contrairement au tas).

    Nas'

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    en fait ce que je veux faire c'est en fait, rendre mon tableau comme lorsque que je l'ai déclarer. (je ne sais pas si je suis clair)
    mais je crois que je v utiliser des tableaux dynamique ca me facilitera la vie!

  6. #6
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Une bidouille?

    Déclarer un tableau sur le même espace mémoire et ne plus utiliser le 1er:
    ça permet de consommer moin de mémoire qu'en déclarant un nouveau tableau ailleurs.

    Mais sinon je ne crois pas que l'on puisse indiquer au prog qu'il puisse se servir de l'espace du tableau pour allouer de la mémoire pour de nouvelle variable.

    Il faut le gérer seul.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 47
    Points
    47
    Par défaut
    si tu veux le remplir de zéros, c'est :

    char tableau[256];
    memset((void*)tableau,0,256);

    pour les variables déclarée sur la pile (comme tableau), elles sont automatiquement libérée à la sortie du block ( } fermante)

  8. #8
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Remplir de zéro ne libère pas la mémoire.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 47
    Points
    47
    Par défaut
    Non, mais effacer un tableau ne veut pas dire libérer la mémoire...
    Et comme je l'ai dit, les variables allouées sur la pile sont automatiquement libérées à la sortie du block !

    Donc si le problème c'est libérer la mémoire : il n'y a pas de problème puisque ce n'est en aucun cas à faire !

    on ne fait des free() qu'en réponse à des malloc().

  10. #10
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Et comme je l'ai dit, les variables allouées sur la pile sont automatiquement libérées à la sortie du block !

    Donc si le problème c'est libérer la mémoire : il n'y a pas de problème puisque ce n'est en aucun cas à faire !
    OK mais si le bloc c'est le "main" elles seront toujours là.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 47
    Points
    47
    Par défaut
    Ben le tableau sera libéré à la sortie du programme : où est le problème ?

    LordBob, éclaire nous !

  12. #12
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Le fait que pendant tout le programme une zone mémoire sera squattée par un tableau inutile.

  13. #13
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    je l'ai dit en gros dans mon programme par exemple je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char tab[32];
    tab = blablabla;
    et plus tard dans le programme, j'aimerais faire quelque chose pour que mon tableau soit identique à:
    revenir à l'état d'origini en quelque sorte.

    mais sinon je crois que je vais faire un memset(), ca devrait résoudre mon problème quand meme!

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 47
    Points
    47
    Par défaut
    dans ce cas, tu veux effacer les données qu'il contient ?

    donc, c bien un memset qu'il faut utiliser.

  15. #15
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    ok merci a vous tous pour votre aide

  16. #16
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    En effet c'est memset car on ne peut pas revenir à l'état d'origine car les anciennes valeurs du tableau ont été écrasées par les nouvelles.

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

Discussions similaires

  1. Effacer un tableau généré dynamiquement
    Par fripette dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/02/2015, 16h46
  2. effacer Contour tableau
    Par nasriOM dans le forum Graphisme
    Réponses: 2
    Dernier message: 17/12/2007, 09h30
  3. Comment effacer un tableau d'une session ?
    Par aclertant dans le forum Langage
    Réponses: 7
    Dernier message: 01/09/2006, 17h36
  4. Réponses: 5
    Dernier message: 24/10/2005, 15h03
  5. Effacer un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 6
    Dernier message: 01/04/2004, 14h23

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