Bonjour,
j'utilise une liste STL pour stocker les addresses des pointeurs alloues dynamiquement pour ensuite les libérer. Voici ma fonction de desallocation:
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();
}
Mes allocations sont toutes faites avec "new".

En mode debug, cette fonction marche tres bien, mais en mode release, voici l erreur que me donne Visual studio 8:

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
        ]
Je ne comprend pas pourquoi je peux acceder a _Ptr en mode debuge et pas en mode release.