Malloc alloue de la mémoire à partir de l'une des régions de mémoire virtuelle du processus appelé Heap. Quelle est la taille initiale du tas (juste après le début de l'exécution et avant tout appel malloc)? Dites, si Heap commence à partir de l'adresse virtuelle X et se termine à l'adresse virtuelle Y, je veux connaître la différence entre X et Y.Comment les pages physiques sont-elles allouées et libérées pendant l'appel malloc et l'appel gratuit?
J'ai lu les réponses à la question en double qui a été posée plus tôt.
Les réponses écrites sont tous dans le contexte d'adresse virtuelle, mais je veux savoir comment les pages physiques sont allouées. Je ne suis pas sûr mais je pense que cette taille initiale (X-Y) n'aurait pas les entrées de table de page correspondantes dans le système d'exploitation. S'il vous plait corrigez moi si je me trompe. Maintenant, disons qu'il y a une requête pour allouer (et utiliser) 10 octets de mémoire, une nouvelle page serait allouée. Ensuite, toutes les autres demandes de mémoire seraient satisfaites à partir de cette page ou chaque fois qu'une nouvelle page serait allouée? Qui déciderait cela?
Lorsque la mémoire serait libérée (en utilisant free()) alors à quel moment cette page physique allouée serait libérée et marquée comme disponible? Je comprends que l'adresse virtuelle et la page physique ne seraient pas libérées immédiatement car la quantité de mémoire libérée pourrait être très inférieure. Puis à quelle heure l'association correspondante entre l'adresse physique et l'adresse virtuelle serait terminée?
Je suis désolé si mes questions peuvent sembler étranges. Je suis juste un débutant et essaie de comprendre les internes.
Veuillez modifier votre titre pour refléter la spécificité de votre problème. –