J'ai une assez grande application MFC pour Windows que je construis avec Visual Studio en version 32 bits.Adresses en mémoire virtuelle pour l'application Windows 32 bits mfc.
Et j'ai une classe spéciale dans mon application qui a un membre d'index int. Cet index est toujours égal à l'adresse de cet objet dans la mémoire. Et tout fonctionne bien.
Cependant, maintenant j'ai besoin de déterminer un peu d'espace dans la mémoire virtuelle de mon application qui ne contiendra certainement pas d'objets de cette classe. Lorsque je les vois dans le débogueur, les valeurs d'intervalle ne sont généralement pas très faibles ou très élevées, mais elles ont une certaine valeur. Puis-je supposer que les adresses 0-10k (0x0000-0x2710) ne contiendront pas les objets de cette classe particulière? Et sinon, y a-t-il un autre espace d'adresse qui soit 'sûr'?
Ou s'il n'y a pas une telle chose alors peut-être que je peux allouer de la mémoire par moi-même pour avoir un 'pool' factice que je peux être sûr qu'aucun autre objet ne sera créé?
créer un tas séparé, écraser 'operator new' pour cette classe et allouer ces objets à ce tas – RbMm
Vous pouvez utiliser' VirtualAlloc (MEM_RESERVE) 'pour allouer de l'espace d'adressage. Rien ne va dans cet espace d'adresse sauf si vous l'avez mis là. Alternative: Windows ne placera aucun objet dans les 64 Ko inférieurs de la mémoire (0x0000 à 0xFFFF). Avant Windows 8, l'application pouvait tirer des astuces pour placer des objets manuellement, mais à partir de Windows 8, cela n'est pas autorisé. –
Vous posez des questions sur la solution que vous proposez. Mais quel problème essayez-vous vraiment de résoudre? – IInspectable