Bonjour,
Y a-t-il une fuite de mémoire dans le code suivant ?
Normalement, on fait d'abord delete, puis ensuite on enlève l'élément dans le vector, mais dans mon cas, je ne sais pas trop comment ça va se passer étant donné que delete appelle le destructeur, où justement je supprime l'élément du vector
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 std::vector<void*> components; struct Component { unsigned index; Component() : index(components.size()) {}; ~Component() { std::swap(components[index],components.back()); components.pop_back(); } }; struct Position : Component {}; struct Name : Component {}; int main() { components.push_back(new Position); components.push_back(new Name); components.push_back(new Name); components.push_back(new Position); components.push_back(new Name); Name* e = static_cast<Name*>(components[2]); delete e; return 0; }
![]()
Partager