2010-07-01 7 views
0

En fait, je suis en train d'accrocher des fonctions de gestion de la mémoire, mais un problème auquel je suis confronté est que je suis incapable d'obtenir le nom du pointeur pour lequel la mémoire est allouée. Je veux dire ... Supposons que Myfunction() alloue de la mémoire à un pointeur Myptr via un nouvel opérateur comme ci-dessous.Comment obtenir le nom du pointeur

Myfunction() 
{ 
    int * Myptr = new int; 
} 

Maintenant, je veux ici que lorsque ma fonction accro « Mynew » est appelé à l'allocation de mémoire, il doit connaître le nom du pointeur Myptr pour lequel la mémoire est allouée.

Répondre

1

Ceci n'est pas possible.

Vous pourriez faire quelque chose de similaire avec une macro, de sorte qu'il passe le nom de la variable à une fonction:

#define NEWPTR(var, type) type * var = allocate_memory(type, #var) 
+1

http://stackoverflow.com/questions/359237/ explique pourquoi cela n'est pas possible. –

1

Le nom du pointeur est seulement connu au moment de la compilation, et non lors de l'exécution. En outre, l'allocation new int est une expression distincte de son affectation à la variable Myptr. Vous redéfinissez les allocateurs, pas l'opérateur d'affectation pour les pointeurs (j'espère!) ...

Comme le suggère @Sjoerd, vous pourriez obtenir quelque chose comme ceci pour votre propre code en introduisant une macro appelant votre propre fonction d'allocation. Je ne suis pas sûr que ce soit vraiment ce dont tu as besoin.

Questions connexes