J'explore les fonctionnements de niveau inférieur du système, et je me demandais comment malloc
détermine l'adresse de début du tas. Le tas est-il à un décalage constant ou y a-t-il un appel quelconque pour obtenir l'adresse de départ? La pile affecte-t-elle l'adresse de début du tas?Obtenir l'adresse de début du tas du processus en cours?
1
A
Répondre
1
Traditionnellement, le tas commençait juste au-dessus de la section de texte et grandissait; Les trames de pile n'ont pas du tout affecté l'adresse de départ à mesure qu'elles se rapprochent de la page 0 non mappée. Cependant, il est plus courant de nos jours pour
- La première adresse à répartition aléatoire, pour le rendre plus difficile pour les exploits de frapper la bonne adresse en mémoire
- Le tas pour être non contiguës, comme
malloc()
habituellement qu'appelermmap()
pour obtenir une adresse partout dans l'espace d'adressage virtuel
1
sbrk renvoie l'adresse de début des octets, il ajoute (ou efface). Dans un nouveau processus sans allocation de segment, le premier appel à sbrk devrait alors renvoyer l'adresse de début de la section "break" du tas. Si je devais parier, c'est ce que implémentations malloc qui utilisent brk/sbrk probablement faire sur leur première exécution.
Questions connexes
- 1. Obtenir l'heure correspondant au début du mois en cours
- 2. Début du processus synchrone C#
- 3. Charge CPU du processus en cours
- 4. Obtenez l'utilisation du processeur en cours de processus en C
- 5. Comment obtenir les dates de début et de fin du mois en cours
- 6. Obtenir le processus en cours donné handle de processus
- 7. Gestion du processus d'exécution en cours dans JAVA
- 8. Utilisation de la mémoire du processus en cours dans C
- 9. Redirection de la console du processus en cours dans Mono
- 10. Comment obtenir le handle de fenêtre en donnant le nom du processus en cours?
- 11. obtenir un progid d'un processus en cours
- 12. freebsd: dir actuel du processus en cours d'exécution par l'ID de processus
- 13. Comment obtenir par programme l'adresse du tas sur Linux
- 14. Comment obtenir l'utilisation du processeur% en C# pour chaque processus en cours
- 15. NSString obtenir 100 caractères du début
- 16. Python - modifie temporairement l'environnement du processus en cours
- 17. fonction pour obtenir le descripteur de fichier terminal du processus en cours UNIX
- 18. AddIn - Obtenir AppDomain à partir du processus de débogage en cours
- 19. Obtenir les régions de mémoire allouées du processus en cours d'exécution
- 20. -Xms: taille initiale du tas ou taille minimale du tas?
- 21. obtenir le nom du processus de l'ID de processus (win32)
- 22. Heure de début d'un processus
- 23. Date du début de la semaine en cours (Si les semaines commencent toujours le dimanche)
- 24. Comment limiter la taille du tas?
- 25. Nombre de processus en cours
- 26. Comment obtenir l'identifiant de processus du processus appelant dans erlang?
- 27. Calcul du début de stl()
- 28. Taille du tas Java: erreur lors du réglage trop grand
- 29. Traitement du thread principal du processus
- 30. Comment obtenir l'heure de début d'un processus SQL?
Ah, je comprends maintenant. Merci! – beta