Lorsque nous allouons dynamiquement de la mémoire, la mémoire occupe-t-elle le segment de mémoire continue.allocation de mémoire dynamique
Répondre
Pas nécessairement, et habituellement non. Il peut y avoir différents mécanismes d'allocation.
Plusieurs vont stocker des métadonnées entre des blocs alloués, diviser des tas en fonction de la taille des objets et d'autres choses. Vous ne pouvez pas compter sur la continuité des pointeurs renvoyés.
Oui, l'allocation est pratiquement contiguë (si vous l'avez obtenu avec un appel malloc()). Il se peut qu'il ne soit pas physiquement contigu, mais du point de vue de l'application, vous ne vous en souciez généralement pas.
Cela dépend de ce que vous demandez exactement. Par exemple, supposons que vous avez ce code C:
char* a = malloc(100);
char* b = malloc(100);
a et b ont chacun des pointeurs 100 octets qui leur sont alloués. Cependant, vous ne pouvez pas supposer que les 100 octets alloués à b seront juste après les 100 octets alloués à a, ou vice versa, ou quoi que ce soit, en fait, sur leurs positions les uns par rapport aux autres. Donc, dans ce sens, non, ils ne sont pas contigus. Dans chaque bloc de 100 octets, cependant, ces 100 octets sont contigus du point de vue de votre programme.
C'est-à-dire, a[1]
est un octet loin de a[0]
et a[2]
.
Vous devez séparer le concept de mémoire virtuelle de celle de la mémoire physique . Alors que chaque bloc alloué (soit un objet unique, soit un tableau d'objets) a un espace virtuel contigu (à partir de l'adresse que votre allocateur de mémoire dynamique vous donne), il peut être divisé en mémoire réelle selon la façon dont le système d'exploitation sous-jacent gère la mémoire.
Bien sûr, si la mémoire virtuelle est pas présent qu'ils correspondent, sinon il est contigu au programme qui l'utilise, mais pas dans la configuration physique de la mémoire ..
- 1. allocation dynamique de mémoire
- 2. Allocation dynamique de la mémoire
- 3. Allocation de mémoire dynamique dans VB6
- 4. Allocation de mémoire dynamique 2D - ObjectiveC
- 5. C++ Allocation dynamique de la mémoire
- 6. allocation mémoire
- 7. allocation locale et dynamique
- 8. Allocation dynamique de la mémoire constante dans CUDA
- 9. C++ allocation de mémoire dynamique dans une fonction - newbie question
- 10. allocation dynamique de la mémoire pour le tableau 3D
- 11. Allocation de mémoire variable
- 12. Allocation de mémoire Android
- 13. argv allocation de mémoire
- 14. Allocation de mémoire de pile
- 15. allocation de mémoire en Java
- 16. structures imbriquées allocation de mémoire
- 17. Allocation de mémoire en Java
- 18. allocation de mémoire double point
- 19. Allocation de la mémoire Silverlight
- 20. allocation de mémoire dans Xvfb
- 21. allocation de mémoire en C
- 22. Allocation de mémoire et bouclage
- 23. Allocation de mémoire d'exécution d'assemblage
- 24. Allocation de mémoire par thread
- 25. allocation de mémoire double pointeur
- 26. Pool d'objets et allocation dynamique
- 27. Allocation de mémoire de la structure globale
- 28. Allocation de mémoire de plusieurs matrices d'assemblage
- 29. allocation de mémoire dans les dispositifs de petite mémoire
- 30. Allocation dynamique de classes, avec Inheritance issue