Bonjour,
j'utilise une liste STL pour stocker les addresses des pointeurs alloues dynamiquement pour ensuite les libérer. Voici ma fonction de desallocation:
Mes allocations sont toutes faites avec "new".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void HDF5_Free_Memory() { list<void*>::iterator iter; for(iter = list_Dyn_Alloc.begin() ; iter != list_Dyn_Alloc.end(); iter++ ) { delete (*(iter._Ptr))._Myval; } list_Dyn_Alloc.clear(); }
En mode debug, cette fonction marche tres bien, mais en mode release, voici l erreur que me donne Visual studio 8:
Je ne comprend pas pourquoi je peux acceder a _Ptr en mode debuge et pas en mode release.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 error C2248: 'std::list<_Ty>::_Const_iterator<_Secure_validation>::_Ptr' : cannot access protected member declared in class 'std::list<_Ty>::_Const_iterator<_Secure_validation>' with [ _Ty=void *, _Secure_validation=true ] D:\Studio2005\VC\include\list(316) : see declaration of 'std::list<_Ty>::_Const_iterator<_Secure_validation>::_Ptr' with [ _Ty=void *, _Secure_validation=true ]
Partager