Question

Je suis étudiant et je veux en savoir plus sur la gestion de la mémoire dynamique. Pour C ++, l'opérateur d'appel new () peut allouer un bloc de mémoire sous le tas (magasin gratuit). En fait, je n'ai pas une image complète sur la façon de l'atteindre.

Il y a quelques questions: 1) Quel est le mécanisme que le système d'exploitation peut allouer un bloc de mémoire ?? Comme je le sais, il existe des schémas de base d'allocation de mémoire comme le premier ajustement, le meilleur ajustement et le pire. Le système d'exploitation utilise-t-il l'un d'eux pour allouer la mémoire dynamiquement sous le tas?

2) Pour une plate-forme différente comme Android, iOS, Window, etc., sont-ils utilisés différents algorithmes d'allocation de mémoire pour allouer un bloc de mémoire?

3) Pour C ++, lorsque j'appelle l'opérateur new () ou malloc (), l'allocateur de mémoire alloue-t-il un bloc de mémoire au hasard dans le tas?

J'espère que n'importe qui peut m'aider.

Merci

Était-ce utile?

La solution

malloc n'est pas un appel système, c'est la bibliothèque (libc) Routine qui passe par certaines de ses structures internes pour vous donner l'adresse d'un morceau de mémoire gratuit de la taille requise. Il ne fait qu'un appel système si le segment de données du processus (c'est-à-dire la mémoire virtuelle qu'il peut utiliser) n'est pas "assez grand" en fonction de la logique de malloc Dans la question. (Sur Linux, l'appel système pour agrandir le segment de données est brk)

Dit simplement, malloc Fournit une gestion de la mémoire à grains fins, tandis que le système d'exploitation gère plus grossier, de gros morceaux de mémoire mis à la disposition de ce processus.

Non seulement différentes plates-formes, mais aussi différentes bibliothèques utilisent malloc; Certains programmes (par exemple python) Utilisez plutôt son allocateur interne car ils connaissent ses propres modèles d'utilisation et peuvent augmenter les performances de cette façon.

Il y a un long article sur Malloc à Wikipedia.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top