C++, libération après un new

niqo -  
 niqola -
J'ai l'erreur "access violation" quand je fais
image = new CImage();
puis plus tard
delete image; // erreur

Si vous avez des pistes.... Merci d'avance

Mon code:

MyDoc.cpp:
image=new CImage();
...
delete image; // erreur "Access Violation
...



image.cpp:
CImage::~CImage()
{
if(m_Bits)
delete m_Bits;
if ( m_hDrawDib )
DrawDibClose ( m_hDrawDib );
}

image.h:

...
public:
CImage();
~CImage();
....

3 réponses

pouet
 
salut,

je ne vois rien d anormal, mais il serait interessant de regarder si ca plante sur ton delete m_Bits ou sur ton DrawDibClose ou...
0
Edno
 
Goethe t'a donné la réponse sur le forum de www.developpez.com

[Citation]
il faut faire :

CImage* image;
image = new(CImage); // et pas de new Cimage();
0
niqola
 
Merci, j'ai changé le new, mais j'ai toujours l'erreur sur le delete. Cela est peut-être dû au fait que l'image est utilisée dans MyView.cpp .
Voici mon code plus en détail:

Si vous avez des pistes.... Merci encore

Mon code:

MyDoc.cpp:
...
CImage *image
image=new(CImage);
...
delete image; // erreur "Access Violation

...

image.cpp:
CImage::CImage()
{
// On initialise la classe
m_largeur = 0;
m_hauteur = 0;
m_Bits = NULL;
// On ouvre la Dib
m_hDrawDib=DrawDibOpen();
}


CImage::~CImage()
{
//if(m_Bits)
// delete m_Bits; // en commentaire sinon crée une erreur
if ( m_hDrawDib )
DrawDibClose ( m_hDrawDib );
}


image.h:
...
public:
CImage();
~CImage();
....
0