S'il vous plaît laissez-moi savoir si je peux le faire ou non?numéro de ligne Gettin de la fonction appelée
J'écris une bibliothèque qui pourrait fonctionner pour suivre l'allocation de mémoire et la désaffectation en C++. En bref, j'essaie de voir si mon application n'a pas de fuites de mémoire. C'est ce que j'ai fait jusqu'ici.
Overrode le nouveau et l'opérateur de suppression et maintenant. Chaque fois que l'application utilise de nouvelles, je prévois de stocker l'adresse et le nombre d'octets qui sont alloués dans cet appel. De même, lorsque la suppression est appelée sur cette adresse, je vais l'enlever de la liste stockée. Jusqu'à maintenant son amende. Mais je veux stocker le nom de fichier et le numéro de ligne d'où le "nouveau" est appelé. Je ne peux le faire que dans le nouveau remplacé. Y a-t-il un moyen d'obtenir le numéro de ligne dans la fonction surchargée?
1 int main()
2 {
3 // Say, A is a structure
4 A *a = new A();
5 return 0;
6 }
7 void* operator new(size)
8 {
9 //
10 // store the line number and file name on line 4 ??? Can I do it?
11 return (malloc(size));
12 }
------------------------
Pourquoi ne pas utiliser Valgrind? Et ne pas ré-implémenter la roue? Bien sûr, vous voulez vraiment faire cela, bien sûr – YuppieNetworking
@Yuppie Valgrind n'est pas sur Solaris. – chrisaycock
Pour les tests de niveau production sur Solaris, utilisez DTrace plutôt que d'écrire votre propre profileur. – chrisaycock