Bonjour à tous,
J'ai un petit souci dans mon application j'ai recours à l'utilisation de singleton et d'objet de la STL et tout ça sous VISUAL c++ 2010 Express donc vous l'aurez compris sous environnement windows.
Suit à plusieurs fuite de mémoire dans mon application, j'ai pu tester le bout de code test suivant :
Après exécution de ce bout de code tout simple il me marque qu'il y a des fuites de mémoire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32
33
34
35
36
37
38
39 #include <vector> // Windows memory leak checking #ifdef _DEGUB #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> #define new new(_NORMAL_BLOCK, __FILE__, __LINE__) #endif //classe de singleton test class A { private: A(){}; ~A(){}; std::vector<int> tab; public: static A &Instance() { static A objetA; return objetA; } }; void main() { _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); A::Instance(); _CrtDumpMemoryLeaks(); }
J'ai repris le même code avec un simple tableau à la place d'un std::vector et je n'ai plus d'après de débugger de fuite de mémoire.Detected memory leaks!
Dumping objects ->
{131} normal block at 0x003460A0, 8 bytes long.
Data: <HTB > 48 54 42 00 00 00 00 00
Object dump complete.
Le programme '[4060] test.exe: Natif' s'est arrêté avec le code 0 (0x0).
Voilà donc c'est bien dommage si je ne peux pas utiliser les structures de la stl avec mes singletons.
Quelqu'un pourra peut-être me dire où je fais une erreur dans l'emploie de mon singleton ? ou si c'est un faux positif de fuite de mémoire ? ou tout autre explication.
Partager