Bonjour,
Je fais (toujours) de l'embarqué (mais maintenant je fais du C++17) et j'aimerais traquer les allocations dynamiques de mémoire. Mon idée a donc été de remplacer les opérateurs new et delete globaux. Pour cela, j'ai lu les deux sections Global replacements des deux pages suivantes :
http://en.cppreference.com/w/cpp/mem...w/operator_new
http://en.cppreference.com/w/cpp/mem...perator_delete
J'en suis arrivé à la conclusion que je devais remplacer la version (1) de new et les versions (1) et (3) de delete. J'ai obtenu le code suivant, placé dans un fichier dédié :
Pour vérifier que ça fonctionne correctement, j'ai ensuite écrite un deuxième fichier cpp avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
La sortie en console donne avec mingw64 / gcc7:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Je constate que new[] ne rappelle pas ma version de new. J'ai l'impression que cela correspondrait à la version (2) qui est pourtant décrite comme ceci :global op new called, size = 4
Delete no size
global op new called, size = 128
Delete no size
Allocated 132 ; untracked 2
Qu'est ce que j'ai raté ?2) Called by the array form of new[]-expressions to allocate all storage required for an array (including possible new-expression overhead). The standard library implementation calls version (1)
Merci d'avance !

 

 
		
		 
        

 
			
			


 
  
  
 
 
 
 
			 
   
 


 [C++17] Remplacement global de new et delete
 [C++17] Remplacement global de new et delete
				 Répondre avec citation
  Répondre avec citation
Partager