Bonjours,
Voila un problème que notre prof nous à posé sans nous donnée de corriger et que je ne comprends pas :
Il s'agit de défénir quelle est la place (en octets) prise dans la mémoire après les opérations suivantes :
char *p;
p = (char *)malloc(100000);
p = (char *)malloc(100000);
free(p);
p = (char *)malloc(100000);
free(p)
Le problème est que je ne sais pas exactement ce que libère free :
p étant défénit comme un pointeur sur un char, free(p) libère 1 octet ou l'ensemble de la zone mémoire allouée?
La réponse du prof est 200012 mais je n'y arrive pas.
1) Si free libère la taille du type pointé alors :
1 + 100000 + 100000 - 1 + 100000 - 1 soit 299'999 octets
2) Si free libère entièrement la zone mémoire alors :
Partager