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 ?
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 ?
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 SYSALLOCEnvoyé par skip78
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.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 ^^
Comme si il fallait rajouter une ligne dans les options du compilateur
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_' ...
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)Envoyé par gege2061
Tu as ajouté les fichiers à ton projet ? Il doivent être compiler avec.Envoyé par skip78
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 lectureEnvoyé par skip78
boulet time j'ai effectivement omis de les compiler mdrEnvoyé par gege2061
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 freeEnvoyé par gege2061
C'est clair que si je commencais par de bonnes bases j'aurai moins de problèmes j'y retourne
Non, mais comme on donne la taille à l'allocation, c'est une idée à creuser.Envoyé par gege2061
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 )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
(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 )
Si tu passe un nom de fichier à sma_init, il devrait rediriger la fsortie dedans, sinon tu peux le faire à la main :Envoyé par skip78
Mais c'est vrai que c'ets un peu trop consistant (je vais voire à mettre des niveaux de log).
Code : Sélectionner tout - Visualiser dans une fenêtre à part a.out > log_memoire.txt
Nan mais c'est plus propre et ça peux éviter d'épuiser la mémoire.Envoyé par skip78
J'utilise un générateur de code...Envoyé par skip78
Et on ne sait pas ce que font les autres en même temps...
Ouais remarque c'est vrai qu'un mec qui à les mêmes initiales que toi pourrait le faire en même temps que toi ^^
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);
Tu ne fais pas la différence entre un pointeur sur char non initialisé et un tableau de char ?Envoyé par skip78
Lol bah si mais bon je vois pas ce que concretement ca peut m'apporter ?
Normalement ca ne devrait rien changer
Et ça, ça ne devrait rien changer ?pointeur sur char non initialisé
Sais-tu au moins ce qu'est un pointeur ?
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
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().Envoyé par skip78
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
Toujours initialisé un pointeur avec une adresse. Sinon par défaut le mettre à NULL ou 0;un pointeur sur char non initialisé
Un pointeur sur un tableau de caractères possède l'adresse d'un des éléments de ce tableau de char.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager