Comment l'appel malloc est-il géré par la bibliothèque de l'utilisateur. J'ai besoin de l'explication de "Comment la mémoire est allouée dans l'espace utilisateur quand on appelle malloc Qui le gère Comme sbrk() est appelé pour entrer dans l'espace du noyau".Allocation dynamique de la mémoire
Répondre
Le paquet malloc() des fonctions gère l'espace. Il obtient des morceaux de mémoire relativement importants du système en utilisant sbrk() et transmet des morceaux plus petits à ses appelants comme demandé, en utilisant n'importe lequel des nombreux algorithmes possibles qu'il est conçu pour utiliser. La fonction free() replace la mémoire libérée dans sa liste de mémoire «disponible pour l'utilisation». Très rarement, il libère réellement la mémoire au système d'exploitation lui-même.
Il y a beaucoup d'articles sur la conception des différentes versions de malloc(). Il y a beaucoup de versions de débogage de malloc(), en particulier, qui recherchent des abus de la mémoire allouée. Vous pouvez lire sur l'allocation de mémoire dans Knuth 'L'art de la programmation informatique'; c'est dans le volume 1 de ma mémoire.
La bibliothèque d'exécution C gère le tas. Le tas a un magasin libre préalloué. Si le moteur d'exécution ne trouve pas de bloc contigu, il essaie de demander plus de mémoire au système d'exploitation - appelle sbrk()
.
Si ce dernier échoue « de mémoire » est rapportée - malloc()
renvoie un pointeur NULL. Si la mémoire supplémentaire est demandée avec succès et le morceau reçu est plus grand que ce que l'appelant a demandé malloc()
pour le bloc en bloc est divisé - une partie est marqué comme occupé et retourné à l'appelant et l'autre est ajouté au magasin gratuit.
A partir du moment où sbrk()
retourné avec succès le morceau de mémoire appartient à l'espace d'adressage du programme appelant.
- 1. allocation de mémoire dynamique
- 2. allocation dynamique de mémoire
- 3. C++ Allocation dynamique de la mémoire
- 4. Allocation de mémoire dynamique dans VB6
- 5. Allocation de mémoire dynamique 2D - ObjectiveC
- 6. Allocation dynamique de la mémoire constante dans CUDA
- 7. allocation dynamique de la mémoire pour le tableau 3D
- 8. Allocation de la mémoire Silverlight
- 9. allocation mémoire
- 10. allocation locale et dynamique
- 11. C++ allocation de mémoire dynamique dans une fonction - newbie question
- 12. Allocation de mémoire variable
- 13. Allocation de mémoire Android
- 14. argv allocation de mémoire
- 15. Allocation de mémoire de la structure globale
- 16. Allocation de mémoire de pile
- 17. Allocation de mémoire basée sur la pile
- 18. Allocation de mémoire d'exécution d'assemblage
- 19. allocation de mémoire dans Xvfb
- 20. allocation de mémoire double point
- 21. allocation de mémoire double pointeur
- 22. structures imbriquées allocation de mémoire
- 23. Allocation de mémoire par thread
- 24. allocation de mémoire en Java
- 25. Allocation de mémoire et bouclage
- 26. Allocation de mémoire en Java
- 27. allocation de mémoire en C
- 28. Pool d'objets et allocation dynamique
- 29. Allocation de mémoire de plusieurs matrices d'assemblage
- 30. Allocation dynamique de classes, avec Inheritance issue
Vous allez devoir expliquer ce que vous voulez dire. –
... et cherchez SO, vous pouvez juste trouver ce dont vous avez besoin! – dirkgently