où malloc() et free() stockent les adresses allouées et leurs tailles (Linux GCC)? J'ai lu que certaines implémentations les stockent quelque part avant la mémoire allouée, mais je n'ai pas pu confirmer cela dans mes tests. L'arrière-plan, peut-être quelqu'un a un autre conseil pour cela: J'expérimente un peu en analysant la mémoire de tas d'un processus afin de déterminer la valeur actuelle d'une chaîne dans l'autre processus. Accéder à la mémoire de processus et la parcourir n'est pas un problème. Cependant, comme la valeur de la chaîne change et que le processus alloue une nouvelle partie de la mémoire à chaque fois, l'adresse de la chaîne change. Parce que la chaîne a un format fixe, il est toujours facile à trouver, mais après quelques changements, les anciennes versions de la chaîne sont toujours dans la mémoire de tas (probablement libérées, mais pas encore réutilisées/écrasées) et donc je ne peux pas Indique quelle chaîne est la chaîne actuelle. Donc, afin de trouver encore le courant, je veux vérifier si une chaîne que je trouve dans la mémoire est toujours utilisée en comparant son adresse avec les adresses malloc/free.Où est-ce que malloc()/free() stocke les tailles et les adresses allouées?
ciao, Elmar
En plus de ma réponse ci-dessous, cela pourrait aider un peu http://www.linuxforums.org/forum/linux-programming-scripting/52375-reading-memory-other-processes.html –
Vous pourriez aussi vouloir creuser dans la partie cartographie de la mémoire du noyau/glibc –