Je travaille sur une application Windows 32 bits qui peut parfois manquer de mémoire (les 2 Go d'espace d'adressage virtuel). Quand je regarde comment la mémoire virtuelle est allouée en utilisant WinDbg ou VMMap, je remarque une image dll qui prend 85 Mo d'espace mémoire virtuel. Pour être précis, 84 Mo de ceci est dans la section ".data", et a la protection "Copie sur écriture". Quand je regarde sur le disque dur, cependant, la DLL est seulement 81 KB.Comment une image dll peut-elle être plus de 1000 fois plus grande dans la mémoire virtuelle que l'espace du disque dur?
Comment l'image dll peut-elle être plus de 1000 fois plus grande dans l'espace d'adressage virtuel que sur le disque? Notez que je ne pose que des questions sur l '"Image", pas sur les tas ou les piles, ou la mémoire cartographiée, juste sur l'image - je me rends bien compte que les tas, piles, mémoire mappée, etc.
J'ai ajouté global_stuff, exactement comme ci-dessus, mais cela n'a pas affecté la section .data de la DLL. Quand je lance dumpbin sur la DLL, je vois que le .data est 52DB00 (ou 86.880.256 octets en décimal). Cela n'a pas changé quand j'ai ajouté global_stuff. – Sean
@Sean, avez-vous exécuté dumpbin sur le .dll 84k aussi bien? – MSN
J'ai d'abord essayé sur une DLL existante, et je n'ai pas vu de différence. Maintenant que j'essaye une DLL vide, comme vous l'avez suggéré, je vois ce que vous dites. J'accepte ta réponse – Sean