pop->tab = (PPersonne*)realloc(pop->tab,sizeof(PPersonne));
Le dernier argument de realloc spécifie la nouvelle taille totale qu'on souhaite, pas l'augmentation de taille. Si tu veux l'augmenter de 1, il faut garder en mémoire la taille précédemment allouée . C'est pouquoi, bien que ce puisse être une constante, c'est rarement le cas en pratique.
Le premier argument doit désigner
- une adresse d'un bloc précédemment obtenu par allocation dynamique ( et non libéré) comme le dit Emmanuel
- ou NULL (pour la première utilisation) auquel cas la fonction joue le rôle d'un malloc
Consulte la FAQ pour la gestion des erreurs d'allocation sur realloc. Ce n'est pas aussi évident qu'il y parait
Partager