1

Pourquoi en utilisant cette fonction j'obtiens un "Protected memory violation"?

void change(char *dest,short nbr){
if(nbr<10){
sprintf(dest," %h ",nbr);
}
else {
sprintf(dest,"%h ",nbr);
}
}
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

2

Parce que tu ne l'appelles pas correctement:
Faux:
char *buffer;
change(buffer,1234);

Correct:
char buffer[11];
change(buffer,1234);
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

Merci beaucoupoui
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

4

mais:
char *buffer;
buffer=malloc(11);

Doit marcher, nonwhat
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

5

Oui, à condition de ne pas oublier le free(buffer); correspondant.
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é

6

Et de vérifier que buffer != NULL (pourtant il serait étonnant qu'un malloc de 11 octets ne soit pas possible)...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

7

XDanger
a écrit : pourtant il serait étonnant qu'un malloc de 11 octets ne soit pas possible

On ne sait jamais. smile
Après plusieurs "Invalid relocation data in ASM program" causés par des lanceurs trop vieux, il ne reste plus grand chose en RAM. grin
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é