Différencier les pointeurs de variable dynamique des autre pointeurs
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 :
Code:
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) |
|________________| |
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.
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.