Bon voilà je me suis remis à FTL VIEWER et je voudrais réduire considérablement la mémoire allouée par mon programme.
Je vais d'abord situer le problème :
Je rapelle que FTL VIEWER est un viewer de texte qui interprète un langage à partir d'un fichier TEXT.
Voici le structure du tableau qui va servir à stoquer les données à afficher. Chaque ligne de ce tableau correspond soit à une image , soit une ligne de texte.
typedef struct
{
unsigned char flag;
union
{
BMP Bmp;
TEXT Text;
}File;
}DOCUMENT;
Mais le nombre de ligne de ce tableau n'est pas connu à l'avance. Tout se met en place lors du parsing effectué qu'une seul fois lors de l'ouverture du document.
Donc pour ne pas prendre de risque j'alloue un nombre maximum de ligne au départ :
DOCUMENT *Document=Malloc(2048*sizeof(DOCUMENT));
Et ensuite lors du parsing j'alloue la mémoire pour le texte et les images en fonctions des besoin.
Grossomodo pour chaque document mon programme bouffe 31 ko de RAM tandis qu'un document de 100 ligne prendrait 11 ko tout au plus.
Donc je me demandais s'il était possible d'allouer le tableau au fur et à mesure, comme le contenu. Je n'ai pas essayé avec Realloc mais je pense que ça serait un peu lourd.