1

J'ai une matrice de 17*10 ( short matrix[17][10]={}; ) déclarée comme globale (en dehors de toute fonction) mais j'arrive a lancer le prog qu'une fois quand le prog est sur la ram et a volonté quand il est archivé. Comment libérerréinitialiser la variable globale? Pour ne pas avoir de pb avec le prog quand il est sur la ram.
François BALLAND

Site Ti : http://www.balland.org

2

Erf, byzarre comme bug, j'en ais jamais eu de pareil ! Ca ne devrait pourtant pas bugger sick !
Pour info, tu ne peux pas libérer la variable globale : elle a forcément une valeur vu qu'elle est allouée dans le fichier ASM.

Tu devrait essayer de ne déclarer en Global que le pointeur, soit "short (*matrix)[10]=NULL;". Et dans main, tu initialise avec "malloc (17*sizeof(*matrix));" Avec un peu de chance, ça buggera plus.

Tu devrais éviter les variables globales à moins que tu veuilles que la variable retienne sa valeur. C'est pas bien, parcque ton exécutable augmente de 17*10*2 octets grin, et pour pasgrand chose. Vo mieux déclarer en dynamique, et tu passe le pointeur en argument aux fonctions qui utilisent le tableau...
Mon site perso : http://www.xwing.info

3

flow
a écrit : J'ai une matrice de 17*10 ( short matrix[17][10]={}; ) déclarée comme globale (en dehors de toute fonction) mais j'arrive a lancer le prog qu'une fois quand le prog est sur la ram et a volonté quand il est archivé. Comment libérerréinitialiser la variable globale? Pour ne pas avoir de pb avec le prog quand il est sur la ram.

memset(matrix,0,340);
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é

4

guilc
a écrit : Tu devrait essayer de ne déclarer en Global que le pointeur, soit "short (*matrix)[10]=NULL;". Et dans main, tu initialise avec "malloc (17*sizeof(*matrix));" Avec un peu de chance, ça buggera plus.

Non, les blocs alloués avec malloc ne sont pas initialisés et donc ça ne fera qu'empirer le problème, à moins d'utiliser là aussi un memset(matrix,0,340);.
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é

5

Ou pour être plus clair (sauf si tu aimes te la pèter) : memset(matrix, 0, 17*10*sizeof(short));
avatar
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.

6

C'est byzarre, vu que c que j'ai donné, Zeljko l'a proposé dans la doc de TIGCC, ici :"How can I create a dynamic two-dimensional array?", ou si vous préférez, ici http://tigcc.ticalc.org/doc/faq.html#37 grin
Mon site perso : http://www.xwing.info

7

Oui, mais il n'y a écrit nulle part que c'est initialisé à 0! En en effet, ça ne l'est pas!
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é

8

Mais une telle initialisation est-elle bien nécessaire ? Ca marche très bien comme ça !
Mon site perso : http://www.xwing.info

9

Et sinon, avec matrix=calloc(170,2); ça initialisera à 0 après l'allocation, non ?

10

Oui. Tout ce que fait calloc est de multiplier les 2 arguments pour avoir la taille, appeler malloc, puis appeler memset.
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é

11

Ah merde ! j'avais pas lu la note ici : http://tigcc.ticalc.org/doc/alloc.html#calloc !
Calloc fait aussi un memset !
Ah ben là, je découvre ! comme quoi, il faut toujours bien lire la doc grin

Mais je vois toujours pas l'utilité d'initialiser le tableau. Ca change quoi ? on peut de toute manière écrire ce qu'on veut dans les deux cas ! il suffit juste de faire gaffe à pas lire dans une zone non initialisée...
Peus-tu éclairer ma lanterne à ce sujet Kevin, parcequ'il me semble que j'ai jamais utilisé calloc, toujours malloc, sans jamais de memset apres, et ça n'a jamais planté wink?
Mon site perso : http://www.xwing.info

12

Voila, guilc, t'as répondu a ta propre question. Si tu n'initialise pas ta matrice c'est source d'erreur enfin si tu fais toujours ça, et que ça a toujours marché, pourquoi changer?? Voilà merci tt le monde!!
François BALLAND

Site Ti : http://www.balland.org