1

Voici ma fonction
char *coule(short num)
{
char coul=malloc(7);
switch (num)
{
case 0:
strcpy(coul,"Noir"); break;
case 1:
strcpy(coul,"Marron"); break;
case 2:
strcpy(coul,"Rouge"); break;
case 3:
strcpy(coul,"Orange"); break;
case 4:
strcpy(coul,"Jaune"); break;
case 5:
strcpy(coul,"Vert"); break;
case 6:
strcpy(coul,"bleu"); break;
case 7:
strcpy(coul,"Violet"); break;
case 8:
strcpy(coul,"Gris"); break;
case 9:
strcpy(coul,"Blanc"); break;
}
return coul;
free(coul); }


Le probleme c'est que mon pointeur coul n'est jamais libere, logique puisque qu'il ya le return avant!! Alors mon espace utilise n'est pas libere et je fait appel a cette fonction plusieur fois donc l'espace devient non negligeable. Alors commen faire? Merci

2

Il faut libérer coul quand tu as fini de l'utiliser.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

erf... Ta fonction retourne coul, donc tu peux le free() plus tard, vers la fin de ton programme, ou bien dès que t'as fini de l'utiliser. Dans tous les cas, le free(coul) à la fin de ta fonction n'a aucun sens.

Au fait, t'as vraiment besoin d'allouer de la mémoire pour ça ?

void coule(char *coul, short num)
{
    static char coulTab[][7] = {"Noir", "Marron", "Rouge", "Orange", "Jaune", "Vert", "Bleu", "Violet", "Gris", "Blanc"};
    strcpy(coul,coulTab[num]);
}


[edit] cross
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

fait le free en dehors de la fonction, ou met en paramettre de ta fonction un pointeur vers ou copier la chaine
ou bien fait retourner a ta fct un double (8 octets) qui pourra contenir la chaine smile

[edit] cross aussi ^^'
et la le mec il le pécho par le bras et il lui dit '

5

Super verytos j'avai pas penser a ca!!! Merci

6

char coul=malloc(7);

pustôt: char *coul=malloc(7);

avatar

7

Mais de toute façon il n'a aucune raison de faire un malloc de cette taille non ?

8

jfg :
Mais de toute façon il n'a aucune raison de faire un malloc de cette taille non ?

Dépendamment du but de la fonction, il pourrait passer un buffer en paramètre et concaténer la couleur directement …

9

Uther
:
char coul=malloc(7);

pustôt: char *coul=malloc(7);

Tout à fait, et j'ajoute que si tu n'actives pas ou que tu ne lis pas les warnings du compilateur, tu vas passer à côté de plein de bugs...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

10

Mais de toute façon il n'a aucune raison de faire un malloc de cette taille non ?
Si, vu qu'il compte y copier un mot pouvant aller jusqu'à 6 caractères, il faut compter un octet par caractère plus le "\0" final.
avatar

11

Utiliser un espace mémoire avec malloc de seulement 7 octets, c'est un peu stupide. Autant réserver directement dans le programme 7 octets en créant un tableau (unsigned char tab_txt[7]wink.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

12

ou ne rien reserver du tout et retourner l'adresse des chaines ecrites en dur

[edit] euh en fait Quesoft a ptet dit la mm chose mais j'avais pas compris (concatener ?)
et la le mec il le pécho par le bras et il lui dit '

13

J'ai demande a ce que les poste soit locker!! Car mon probleme est resolut Merci

14

pourquoi locker ?
si certaines personnes ont une question qui correspond à ce sujet, pourquoi ne pas leur laisser la possibilité de continuer la conversation ici, en profitant de ce qui a déjà été dit ?
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall