Regardez le code:fonctions realloc et malloc
#include<stdio.h>
#include<stdlib.h>
void main()
{
int *p;
p = malloc(6);
p = realloc(p, 10);
if (p == NULL)
{
printf("error");
exit(1);
}
}
Prenez cet exemple pour le code, supposons que la mémoire totale est de 10 octets et 2 octets est utilisé par la déclaration de pointeur de type int et ohter 6 octets par la fonction malloc les 2 octets restants sont occupés par d'autres programmes, maintenant quand j'exécute la fonction realloc pour étendre la mémoire vers laquelle pointe le pointeur, elle va rechercher 10 octets en mémoire et quand elle n'est pas disponible elle alloue 10 octets de mémoire taser la zone et copier le contenu de malloc et le coller dans la nouvelle zone de mémoire allouée dans la zone de tas, puis supprimer la mémoire stockée dans malloc droite?
Est-ce que realloc() renvoie un pointeur NULL parce que la mémoire n'est pas disponible? Aucun droit!? Il va à la zone de tas pour l'allocation de la mémoire à droite? Il ne renvoie pas un pointeur NULL à droite?
'quand il est pas disponible, il alloue 10 octets de mémoire de heap' Est-ce que ce doit être « est » plutôt que « n'est pas »? –