Bonjour,
J'ai une fuite mémoire dans un pg car un vector composé de pointeurs alloués par des new n'est jamais effacé (et les delete ne sont jamais faits ...)
J'ai regardé la contribution de Loulou24 sur le sujet dans le forum et qui, selon moi, répond à mon besoin ... mais j'ai un souci car je travaille sur des données 'const'.
Le msg d'erreur est le suivant :
Pour que ce soit plus clair, je vous donne le petit bout de code avec :error C2665: 'delete' : none of the 2 overloads can convert parameter 1 from type 'const tCC *'
c:\program files\microsoft visual studio\vc98\include\algorithm(37) : see reference to function template instantiation 'int __thiscall Delete::operator ()(const tCC *& ) const' being compiled
Error executing cl.exe.
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
40
41
42 #include <stdio.h> #include <vector> #include <algorithm> typedef struct { unsigned long idx; float valf; } tCC; typedef const tCC* tCCConstPtr; typedef std::vector<tCCConstPtr> ttCCConstPtrVector; struct Delete { template <class T> operator () (T *&p) const { delete p; p = NULL; } }; void main(void) { ttCCConstPtrVector aCubes; tCC* pC = new tCC; pC->idx = 0; pC->valf = 0.0; aCubes.push_back(pC); tCC* pC1 = new tCC; pC1->idx = 1; pC1->valf = 1.0; aCubes.push_back(pC1); tCC* pC2 = new tCC; pC2->idx = 2; pC2->valf = 2.0; aCubes.push_back(pC2); std::for_each(aCubes.begin(), aCubes.end(), Delete()); }
Quelqu'un peut-il m'indiquer ce que j'ai mal fait ? Là où ça pêche ?
Si Loulou24 est dispo, je suis sûr qu'il va me trouver cela rapidement ...
Merci d'avance.
[Balises CODE et QUOTE rajoutées par Loulou24, merci d'y penser à l'avenir]
Partager