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 :

Incomprehensible :/ (Pointeur non portable)


Sujet :

C

  1. #41
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Non mais le tiens me semble accessible je suis en train de travailler dessus c'est le truc d'emmanuel qui est galere parce qu'il y a des includes à tout va.

    Bon et pour le tien il suffit donc d'include ton .c ?

  2. #42
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par skip78
    Non mais le tiens me semble accessible je suis en train de travailler dessus c'est le truc d'emmanuel qui est galere parce qu'il y a des includes à tout va.
    Mais nan faut pas tout prendre (enfin tu peux, ça sert toujours), y a un mode d'emploi : Mode d'emploi du gestionnaire de mémoire SYSALLOC

    Citation Envoyé par skip78
    Bon et pour le tien il suffit donc d'include ton .c ?
    C'est les .h que l'on inclue ! Tu as un exemple d'utilisation dans le post, il faut inclure sma.h, initialiser le module, utiliser les fonctions sma_* à la place des classique malloc/calloc/realloc/free et enfin fermer le module.

  3. #43
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    bon voila j'ai tou fait bien comme il faut (enfin il me semble )
    et bien evidemment il ne reconnait pas les declarations ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      [Linker error] undefined reference to `sma_init_' 
      [Linker error] undefined reference to `sma_end_' 
      [Linker error] undefined reference to `sma_malloc_' 
    ...
    Comme si il fallait rajouter une ligne dans les options du compilateur

    Citation Envoyé par gege2061
    C'est les .h que l'on inclue ! Tu as un exemple d'utilisation dans le post, il faut inclure sma.h, initialiser le module, utiliser les fonctions sma_* à la place des classique malloc/calloc/realloc/free et enfin fermer le module.
    Oui oui autant pour moi j'ai bien evidemment inclu le .h, comme dans l'exemple, et modifié tous les mallocs (je n'ai pas de reallocs ni de free)

  4. #44
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par skip78
    bon voila j'ai tou fait bien comme il faut (enfin il me semble )
    et bien evidemment il ne reconnait pas les declarations ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      [Linker error] undefined reference to `sma_init_' 
      [Linker error] undefined reference to `sma_end_' 
      [Linker error] undefined reference to `sma_malloc_' 
    ...
    Comme si il fallait rajouter une ligne dans les options du compilateur
    Tu as ajouté les fichiers à ton projet ? Il doivent être compiler avec.

    Citation Envoyé par skip78
    ni de free
    Ah bah déjà c'est pas terrible, à chaque appel de malloc/calloc ou realloc doit correspondre un appel à free pour libérer la mémoire : encore un peu de lecture

  5. #45
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par gege2061
    Tu as ajouté les fichiers à ton projet ? Il doivent être compiler avec.
    boulet time j'ai effectivement omis de les compiler mdr

    Citation Envoyé par gege2061
    Ah bah déjà c'est pas terrible, à chaque appel de malloc/calloc ou realloc doit correspondre un appel à free pour libérer la mémoire : encore un peu de lecture
    Bah il me semblait que la liberation memoire n'était pas utile dans le cas ou on ne pouvait la faire avant la fin du programme puisque lors de l'arret du programme la memoire est liberee par elle meme. Donc c'est vrai que du coup je ne fait jamais de free
    C'est clair que si je commencais par de bonnes bases j'aurai moins de problèmes j'y retourne

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par gege2061
    Il y a aussi le module SYSALLOC : http://emmanuel-delahaye.developpez.com/clib.htm d'Emmanuel Delahaye, je ne crois pas qu'il détecte les dépassement de capacité.
    Non, mais comme on donne la taille à l'allocation, c'est une idée à creuser.

  7. #47
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    dis gege tu donnes souvent ton numero comme ca ?
    H_NJ_LIST_0403061931

  8. #48
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par skip78
    dis gege tu donnes souvent ton numero comme ca ?
    H_NJ_LIST_0403061931
    Oui, je suis les conseil de tonton Emmanuel : Organisation du code source (et encore il n'y a pas les secondes )

  9. #49
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    lol bon sinon ton mode debugg semble fonctionner, mais je ne peut pas lire l'integralité des remarques ca doit faire 10 fois la taille max de la console

    (A noter que j'ai mis des free de partout et que comme prevu ca ne change rien )

    (ton code c'était le 6 mars 2004 à 19h31 c'est ca ? )
    effectivement il te manque le 20 du debut et les secondes à la fin mais les secondes c useless quoi genre tu va ecrire deux headers en une minute )

  10. #50
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par skip78
    lol bon sinon ton mode debugg semble fonctionner, mais je ne peut pas lire l'integralité des remarques ca doit faire 10 fois la taille max de la console
    Si tu passe un nom de fichier à sma_init, il devrait rediriger la fsortie dedans, sinon tu peux le faire à la main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a.out > log_memoire.txt
    Mais c'est vrai que c'ets un peu trop consistant (je vais voire à mettre des niveaux de log).

    Citation Envoyé par skip78
    (A noter que j'ai mis des free de partout et que comme prevu ca ne change rien )
    Nan mais c'est plus propre et ça peux éviter d'épuiser la mémoire.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par skip78
    effectivement il te manque le 20 du debut et les secondes à la fin mais les secondes c useless quoi genre tu va ecrire deux headers en une minute )
    J'utilise un générateur de code...

    Et on ne sait pas ce que font les autres en même temps...

  12. #52
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Ouais remarque c'est vrai qu'un mec qui à les mêmes initiales que toi pourrait le faire en même temps que toi ^^

  13. #53
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Bon en tout cas j'ai toujours pas de solution potable

    On m'a proposé de remplacer les char* par des
    char Path[FILE_MAX_PATH+1];

    mais je sais pas ce que ca peut changer ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char Path[FILE_MAX_PATH+1]; /* chépu y'a une constante qui va bien */
    gchar *chemin; 
    chemin = gtk_file_selection_get_filename(GTK_FILE_SELECTION (file_selection) ); 
    if( !chemin )   ERREUR("saisie chemin"); 
    memset( Path, 0, sizeof(Path) ); 
    strncpy( Path, chemin, sizeof(Path)-1 ); 
    gtk_widget_destroy(file_selection);

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par skip78
    On m'a proposé de remplacer les char* par des
    char Path[FILE_MAX_PATH+1];

    mais je sais pas ce que ca peut changer ?
    Tu ne fais pas la différence entre un pointeur sur char non initialisé et un tableau de char ?

  15. #55
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Lol bah si mais bon je vois pas ce que concretement ca peut m'apporter ?
    Normalement ca ne devrait rien changer

  16. #56
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 580
    Points
    41 580
    Par défaut
    pointeur sur char non initialisé
    Et ça, ça ne devrait rien changer ?
    Sais-tu au moins ce qu'est un pointeur ?

  17. #57
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Bon au lieu de parler par enigme vous pourriez m'expliquer ?

    Parce que j'ai beau penser savoir tout ca, si c'est pas le cas faudrait m'expliquer plutot que de m'envoyer promener ...

    Ma chaine de caractère est un const char*, initialisé à NULL, comme convenu dans l'utilisation de la fonction de recherche de chemin utilisée ...

    Donc bon ce pseudo debat n'à rien à voir avec mon probleme puisque le const char m'est imposé.

    J'attends cependant une explication

  18. #58
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par skip78
    Ma chaine de caractère est un const char*, initialisé à NULL
    Ce n'est pas une chaine de caractere. Une chaine de caractere est un tableau de caractere termine par '\0'. Si tu veux utiliser ton pointeur, il faut l'associe a un bloc memoire alloue par malloc().

  19. #59
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Ah ouais d'accord je viens de capter ce que vous vouliez dire

    Le fait est que le const char * est géré par la fonction d'appel de chemin et par conséquent que cette dernière s'occupe de lui allouer une petite place memoire

  20. #60
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    un pointeur sur char non initialisé
    Toujours initialisé un pointeur avec une adresse. Sinon par défaut le mettre à NULL ou 0;

    Un pointeur sur un tableau de caractères possède l'adresse d'un des éléments de ce tableau de char.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. [debutant] Pointeur non-initialisé ?
    Par Pit29 dans le forum C
    Réponses: 8
    Dernier message: 04/01/2007, 16h55
  2. .exe non portable?
    Par poukill dans le forum C++
    Réponses: 41
    Dernier message: 16/06/2006, 11h09
  3. Framework .NET 2.0: application non portable
    Par alceste dans le forum C++
    Réponses: 10
    Dernier message: 16/06/2006, 08h20
  4. comparaison de pointeur non portable
    Par kykyn dans le forum C++
    Réponses: 2
    Dernier message: 16/02/2006, 10h58
  5. Probléme de code non portable
    Par Stany dans le forum Windows
    Réponses: 2
    Dernier message: 23/08/2005, 11h02

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