ça fait un handle par variable TIOS ! Pas par variable dans ta source C !
BiHi Le 17/12/2002 à 21:34 Exact. Donc tu peux repasser tout tes trucs en "dynamiques", mais essaye de faire moins d'allocation mais plutôt d'en faire des plus grosses.

;)
Link Le 17/12/2002 à 21:47 Si tu mets des données en statique ou en automatique, ça ne te rajoute aucun Handle!
Les variables statiques sont dans le Handle du programme asm.
Mais pour des données dynamiques, c'est un Handle par malloc. Mais un appel à realloc ne rajoute pas de Handle, normalement, puisque ça en redimensionne un (le déplaçant au besoin)

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.
Ça plante à quel moment du programme exactement, et pour un fichier de quelle taille ?
J'ai juste regardé vite-fait, et j'ai remarqué que tu stockes dans 'size' certaines infos, et tu fais un malloc(size+1). Le size est déclaré comme un char, cad qu'il peut valoir au maximum 127.
Il se peut que lorsque tu initialises size (avec size=*file, mais je ne sais pas ce qu'il y a dans file), la valeur de *file soit supérieure à 127, ce qui entrainerait un size négatif, qui pourrait faire échouer le malloc... Tu devrais déclarer size en unsigned char (voire en unsigned short, pour prévoir large)
PpHd Le 18/12/2002 à 00:01 Il y a plus de 2000 handles max... En fait c un peu complique.
Kevin Kofler Le 18/12/2002 à 03:52Edité par Kevin Kofler le 18/12/2002 à 03:56 En tout cas, si c'est vraiment le nombre maximum de handles, alors il faudra probablement allouer des tableaux, des structures, ou des combinaisons plutôt que d'allouer des blocs de partout.
Essaye d'observer la valeur de HeapGetHandle(); à plusieurs moments.
guilc Le 27/12/2002 à 21:05 Je viens de trouver un nouveau probleme, du a un bug de AMS :
Lorsque'on utilise des boites de dialogues et que le programme est archivé, ça plante. Chose bizarre, ça ne plantait pas en compilant avec une version plus ancienne de TIGCC (je compile maintenant avec la 0.94)...
Le #define SET_FILE_IN_USE_BIT est censé corriger ce bug, mais il semble que ça ne change rien. Pour coriger le probleme, je suis obligé de cacher le twin a la main !
Y aurait-il un probleme dans TIGCC ?
Quelle version de la 0.94 utilises-tu ? La Final, ou une des dernières bêtas ?
Kevin Kofler Le 30/12/2002 à 14:19Edité par Kevin Kofler le 30/12/2002 à 14:20 Attention, la correction proposée n'est pas correcte, parce que l'appel à HeapDeref pourrait avoir détruit d1. Sebastian m'a répondu qu'il va corriger ça correctement.
Et le problème n'est pas lié à EXECUTE_IN_GHOST_SPACE.
guilc Le 31/12/2002 à 20:47 Génial, cette nouvelle version marche très bine. Y a plus le bug.
Encore un détail : SET_FILE_IN_USE_BIT corrige un bug important d'AMS... Alors pourquoi ne pas le mettre par défaut ?
Oui, si on met SET_FILE_IN_USE_BIT par défaut, on va entendre que les programmes TIGCC deviennent de moins en moins _nostub, qu'ils sont de plus en plus gros (alors que pour diminuer un peu leur taille il suffit d'utiliser les options qui sont mises à disposition), que je ne sais quoi encore...
Pas celles qui suppriment le startup code dont tu n'as pas besoin. C'est vraiment débile de ta part de ne pas les utiliser. Ça optimise le code en taille et en vitesse de lancement.
BiHi Le 02/01/2003 à 15:50 Mais on le sait très bien où elles sont ces options, mais personnellement, je dois chaque fois ouvrir la doc pour mettre les defines pour avoir un executable qui fasse moins de 100 octets. J'aimerais bien moi aussi qu'il existe une page pour choisir les options.
De plus le choix des options par défaut est plus que discutable, en particulier pour le support des exit. Enfin voilà...

;)