Bonjour � tous,
je travail actuellement sur un moteur 3D directX10 mais mon probl�me vient d'une notion de C++ qu'il doit me manquer.

J'essaie de permettre � l'utilisateur de cr�er autant d'instances d'un objet(mesh) qu'il le souhaite, la solution qui m'est venue en t�te de prime abord est la suivante :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
 
     vector<sphere> mSph;
     mSph.push_back(sphere()); //a chaque appui sur une touche
     mSph.back().init(); //initialise les propriétés de ma sphere
Ce code fonctionne uniquement si dans le destructeur de ma classe sphere
je commente le code qui permet de lib�rer le vertex buffer, l'index buffer et le textureBuffer, dans le cas contraire j'ai un erreur d'acc�s en m�moire d�s le push_back de mon objet anonyme dans le vecteur :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
 
	SAFE_RELEASE(mVB);
	SAFE_RELEASE(mIB);
	SAFE_RELEASE(textureBuffer);
Si je commente ces lignes j'ai un gros probl�me de fuite m�moire au v�ritable moment ou j'ai besoin de lib�rer ces objets car le destructeur ne sert plus � rien et des Mo de texture, de VB et d'IB s'empilent dans la m�moire sans �tre lib�r�s. N�anmoins une fois ces lignes comment�s le programme fonctionne tout � fait correctement et cr�e les sph�res dynamiquement.

J'aimerais savoir pourquoi le destructeur est-il appel� � l'instanciation?
De plus le SAFE_RELEASE est sens� pr�venir contre les risques d'acc�s en m�moire puisque le release n'est r�alis� que si l'objet existe r�ellement.

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
 
Exception non gérée à 0x012ff911 dans x.exe*: 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0xcccccccc.
Merci par avance !