bonjour tout le monde j'espère que quelqu'un pourra trouver une solution à mon problème.
Dans mon programme, à un endroit particulier du programme, la fonction calloc fait planter ma caltos sans aucune raison apparente.
Voici l'instruction où ça coince : char *ptr = calloc(500,1);
Je suis bien sûr qu'il s'agit de cette instruction car à la ligne juste avant, j'ai écrit une instruction ordonnant d'afficher un message et de même à la ligne juste après. Le premier message est bien affiché mais pas le second.
Pour l'info, j'ai fait tourner le programme sur TI-89 titanium avec la librairie genlib. De plus, le programme n'alloue pas beaucoup de blocs mémoires donc le plantage n'est surement pas du à une saturation du heap...
aze Le 24/04/2008 à 14:41 Ton bug se trouve bien avant l'appel à calloc(), tu dois écrire en dehors d'une zone de mémoire allouée, soit en écrivant en dehors des limites d'un tableau, soit en utilisant un pointeur qui pointe n'importe où. Et comme ta mémoire est corrompue, au moment où calloc recherche une zone de mémoire libre à allouer, il fait n'importe quoi et provoque le crash
j'ai bien vérifié et je crois pas que c'est le cas.
Est-ce que c'est possible que ce soit une erreur de compilation ? (j'utilise TIGCC v0.95 je devrais peut être l'updater...)
Kevin, toi qui te donne le droit de donner des conseils à tout le monde, sache que moi je te conseille de mettre à jour ton site. Ca rendra service à tout le monde.

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
aze Le 24/04/2008 à 22:46 kingkev> des fois la corruption peut venir d'un truc ausis bête qu'un sprite qui est affiché en dehors de l'écran et qui déborde sur le reste de la mémoire. mais je suppose que genlib a des routines clipées et que le bug vient d'ailleurs. mais c'est surtout pour dire que ça peut venir de choses innatendues
kingdev> Le problème se produit-il dès le lancement du programme ou bien faut-il attendre que tu « joues » un peu pour qu'il se manifeste ? Essaie de désactiver un maximum de choses dans ton programme de façon à réduire le plus possible le nombre de lignes de code impliquées dans l'apparition du problème.

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Sasume> il se produit à un "endroit" particulier du programme, et dès la première fois que l'exécution passe par cet endroit.
Zeph Le 29/04/2008 à 17:18 tiens, un valgrind dans TiEmu ça serait cool ^^ (pour le coup ça ferait un bon avantage à tiemu)

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Zeph Le 30/04/2008 à 09:31 par "un valgrind" je sous-entendais un outil du même type que valgrind (sachant que l'émulateur existe déjà, adapter valgrind ne me semble pas être la meilleure solution, il faudrait mieux ajouter à TiEmu la possibilité de contrôler les lectures/écriture en ram)

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Il est peut-être faisable de faire une interface à l'émulateur qui permet à réutiliser une partie du code de Valgrind, en revanche ça deviendra encore plus une usine à gaz, c'est déjà le bordel avec le code de UAE, celui de GDB et le nôtre. En revanche, une telle interface pourrait aussi permettre d'utiliser les profilers de Valgrind (cachegrind, callgrind).