merci pour tes conseils. Pour répondre à tes question :
en fait, je suis en train d´écrire une espèce de jeu à la manière de ce qui se fait pour le prologin où différentes IA (chacune exportée par une DLL) s´affrontent. Mais, dans mon cas, ces IA sont supposées diriger des fourmis, mais pas comme un être qui dirigerait une fourmilière, mais plutôt comme une IA qui dirigerait chaque fourmis indépendamment. Et donc lorsque la fonction chargé de faire jouer une fourmis est appelé avec les information d´une fourmis, je veux qu´elle ignore tout des autres fourmis (qui ne sont pas dans son champ visuelle, ou dans ce qu´elle a pu voir auparavant).
Bien sûr, je peut faire confiance au programmeur pour ça (c´est comme ça que ça fonctionne pour l´instant), mais je cherchais un moyen pour que mon programme force les DLL à respecter ça (et puis c´est une question théorique interessante, au delà du cadre de ce que je suis en train d´écrire) (car chaque DLL est appelé une fois pour chaque fourmis qu´elle contrôle (typiquement, toutes celles d´une fourmilière) et ne doivent rien stocker entre les appels).
Alors je me suis dit que contrôler le tas pouvait être un bon moyen, car pour stocker les info une DLL doit forcément demander de la mémoire (sauf à avoir allouer en statique une grosse quantité de mémoire qui doit lui suffire pour tout (mais ça, on peut le contrôler au chargement), ou a écrire dans des fichiers (là j´ai pas trop d´idée pour l´empêcher)).
Et si jamais une DLL triche, alors je la décharge juste, ce n´est pas critique pour mon programme.
Bref, j´ai un peu avancé car l´idée de mon code ci-dessus est juste ; seulement tout les bloc dans le tas ne sont pas utilisés, et parfois un appel à new réorganise le tas et va supprimer des blocs (dont je ne connais pas l´utilité, mais il doit y en avoir car ils sont restauré plus tard).
Par contre, en contrôlant que les blocs ont le drapeaux PROCESS_HEAP_ENTRY_BUSY et en n´ajoutant leur taille au total que si c´est le cas, j´obtiens exactement ce que je veux (un total de la mémoire alloué avec new et malloc, même si cela est fait par une DLL (et à la limite, même si elle poussait le vice jusqu´à se créer son propre tas).
bon bien sûr, rien n´empêche un programmeur de s´allouer quelques pages dans la mémoire virtuelle du processus et de la gérer lui même sans passer par les fonction de gestion du tas de windows, mais là, ça deviendrait sadique de sa part, et puis ça peut se contrôler aussi.