Salut !
J'essaye de trouver un moyen de différencier un pointeur vers une variable allouer dynamiquement des autre pointeurs, pour pouvoir effectuer un delete si il a était créé dynamiquement, et ne rien faire si il n'a pas était créé dynamiquement.
La mémoire d'un programme C semble être gérer de cette manière :
Une solution consisterais donc à vérifier que la valeur du pointeur soit compris entre le pointeur la dernière variable static et le pointeur la dernière variable local.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 ________________ | | | VARIABLE LOCAL | | (pile) | |________________| | | | | | V | | | | FREE | | | | ^ | |______| |_______| | | | ALLOCATION | | (tas) | |________________| | | | VARIABLE STATIC| | (segment data) | |________________| | | | VARIABLE GLOBAL| | (segment bss) | |________________| | | | FONCTION | | (segment text) | |________________|
Pour récupérer la dernière valeur de la variable local, c'est pas bien compliquer.
Par contre, pour arriver à récupérer la valeur de la dernière variable static (ou la première variable dynamique) c'est plus compliqué (surtout si on a plusieurs fichier sources).
Avez-vous une idée de comment faire ?
Ou peu être une autre méthode plus simple ?
Merci pour votre aide.
Partager