je cherche a inserer quelques infos lors de l'appel a l'operateur new en le mettant dans une macro. alors inserer le nom du fichier, ca je sais faire. je voudrais maintenant avoir un peu plus d'info (non, pas la ligne, ca aussi je sais faire!)
mon but serait de creer a la volée une instance statique de LocationInfo, qui contiendra le nom du fichier et la ligne, un pointeur sur un autre LocationInfo pour les mettre dans une liste chainée, et quelques valeurs de base (genre combien d'allocs ont ete realisées, etc). ainsi j'obtiens une liste chainée de tous les appels a new, avec le nombre d'appels, je peux verifier quel endroit alloue le plus, etc.
j'ai tout ce qu'il faut pour le faire sauf l'instance de LocationInfo que je n'arrive pas a créer a la volée.
par exemple j'aimerai que le code
s'étende en
int* a = (static LocationInfo info(__FILE__, __LINE__, __FUNCTION__)), new(&info) int;
Evidemment cela ne compile pas du tout, je cherche a le faire rentrer de force dans le compilateur!! (oui c'est pas malin :p)
je pense qu'il y a un moyen de conserver la syntaxe _new type; sinon l'autre possibilité est de faire
int* a;
_new(a, int);
mais ca ne me plait pas, je prefererais garder la "r-value" intacte.
j'ai pensé a :
- utiliser l'operateur ,
- mettre une boucle ou un truc du meme style;
- declarer une classe a cet endroit avec un champ statique
mais aucune de ces methodes n'autorise la declaration d'une variable a cet endroit
d'autres pistes ?
Partager