C++, libération après un new
niqo
-
niqola -
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();
....
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();
....
A voir également:
- C++, libération après un new
- New outlook - Accueil - Mail
- Indicatif new york whatsapp - Forum Free mobile
- New cpu installed ftpm/psp nv corrupted or ftpm/psp nv structure changed - Forum BIOS
- Comment tuer un habitant dans animal crossing new horizon - Forum Jeux vidéo
- Appel vers NEW YORK - Forum Opérateurs & Réseaux mobiles
3 réponses
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...
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...
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();
[Citation]
il faut faire :
CImage* image;
image = new(CImage); // et pas de new Cimage();
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();
....
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();
....