OK, je vais essayer de simplifier:
Il te faut passer par deux fonctions qui alloueront et désalloueront la mémoire.
malloc() est la fonction pour allouer, et prend 1 paramètre: la taille en bytes à allouer.
Son principe est d´aller créer un tableau d´octets, de char en C, dans une région de la mémoire appellée Heap, qui n´est lui même rien d´autre qu´un gros tableau d´octets. En gros, il va créer un tableau dans un tableau. Il retourne ensuite le pointeur vers ce nouveau tableau.
Toi, de ton côté, tu dois avoir un pointeur du bon type qui pointera vers ce tableau, et comme ça tu pourra [] comme si le tableau était statique.
Attention! Normallement, c´est l´OS qui s´occupe d´allouer et de désallouer. Là, c´est toi, alors il faut prendre des précautions au cas ou: par exemple, s´il ne reste plus de mémoire à allouer, ect.
Et surtout, TOUJOURS désallouer! C´est le principe de se débarrasser du tableau dans la Heap. Il faut le faire avant que ton programme se termine. Pour cela, t´as une fonction:
free(), qui prend un paramètre, le pointeur vers le tableau, et ne retroune rien.
Ex.:
- include < stdlib.h>
int main()
{
char *MonPointeur = malloc(10);
MonPointeur[7] = ´A´;
free(MonPointeur);
return 0;
}
N´oublie pas, malloc est une taille en octets: un int vaut par exemple en général 4 octets, mais ça dépend. Pour cela, il est toujours essentiel d´utiliser sizeof(), qui retourne la taille en octets d´une structure ou d´un type. Il suffit ensuite de multiplier ce nombre d´octets/type par le nombre que tu en veut, et voilà, le tour est joué.
Ex.:
- include < stdlib.h>
int main()
{
int MonPointeur = malloc(10*sizeof(int));//Alloue 10 int
MonPointeur[7] = ´A´;
free(MonPointeur);
return 0;
}
Kelios
---------