453Fermer455
nullLe 13/03/2004 à 13:04
Je veux essayer de faire une fonction qui va placer n'importe quelle type de données les une à la suite des autres et puis d'allouer un nouveau bloc quand il est nécessaire car jusqu'à mnt j'avais qu'une seule fonction pour chaque type de donnée

void *BLOC[64];
void *BLOC_p;
short Mem_aviable=1024;
short nb_ko=1;

__attribute__((regparm))void *ALLOC_MEM(short mem_to_alloc)
     {
	                   mem_to_alloc=mem_to_alloc+2;
	  	           if(Mem_aviable<mem_to_alloc)
 			   {
    					BLOC[nb_ko]=malloc(1024);
    					BLOC_p = BLOC[nb_ko];
    					memset(BLOC_p,0,1024);
    					nb_ko++;
    					Mem_aviable=1024;   	   	          	
   		            }	
  			   Mem_aviable = Mem_aviable - mem_to_alloc;
  			   void *sav = BLOC_p;
  			   BLOC_p++;
  			   return sav;
    }


En fait c'est au niveau du BLOC_p++ que ça cloche. Il faudrait indiquer de quel type de donnée il s'agit en mettant par exemple
(xml_tree*)BLOC_p++; pour mes balises XML. Le truc c'est que je ne sais pas comment passer le type de pointeur des données à la fonction.