Bonjour à tous,
Question un peu vague, mais la moindre petite information sera plus que bienvenue.
J'aimerais savoir comment sont structurés les blocs de mémoire aloués dynamiquement.
Un petit exemple vaut mieux etc...
Sous windows, éxecutons le code suivant :
Au débuguage on note que Test = 0x00430090.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include <string.h> int main(int *argc, char **argv) { char *Test = new char[0xF]; strcpy(Test, "aaaabbbbccccdddd"); }
On effectue un dump de la mémoire aux alentours de cette adresse :
(C'est pas beau, mais sans police à chasse fixe, c'est illisible)
De plus, est-ce que cette organisation change en fonction du système d'exploitation, de l'architecture, du language utilisé ou du temps qu'il fait dehors ?
Code X : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 00430080 0F 00 00 00 .... -> J'ai remarqué que c'était la taille du bloc alloué 00430084 01 00 00 00 .... -> Keskecé ? 00430088 29 00 00 00 )... -> What ? 0043008C FD FD FD FD ýýýý -> C'est quoi ? 00430090 61 61 61 61 aaaa -------------------- 00430094 62 62 62 62 bbbb Voilà le bloc alloué 00430098 63 63 63 63 cccc 0043009C 64 64 64 64 dddd --------------------- 004300A0 00 FD FD 00 .ýý. -> ????? 004300A4 00 00 00 00 ....
En vous remerciant par avance, vous avez un très beau forum![]()
Partager