Aufruf des Kopierkonstruktors erzeugt Zugriffsverletzung

Winnetou11

Grünschnabel
Code:
in RawImage.h

RawImage(const RawImage& source); // der Kopierkonstruktor
RawImage& operator=(const RawImage& source); // der Zuweisungsoperator

in RawImage.cpp

RawImage::RawImage(const RawImage& source)
{
	//copyFrom(source);
	//DebugF("RawImage(const RawImage& source) source.m_fileName = %s\n",source.m_fileName.c_str());
}
RawImage& RawImage::operator=(const RawImage& source)
{
	std::string filename = source.getFileName();
	DebugF("RawImage::operator=(const RawImage& source) source.m_fileName = %s\n",filename.c_str());

	copyFrom(source);
	return *this; // als Referenz zurückgeben
}


ein Code wie dieser:

RawImage obj1;
RawImage* imageP;

imageP = new RawImage(obj1); // mit Kopierkonstruktor

erzeugt in VisualStudio9 :
Eine Ausnahme (erste Chance) bei 0x7c97d811 in prog.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xbaadf005

Das Programm startet ganz normal, es bricht nicht ab.
Die Ausgabe steht unten im AusgabeFenster von VS

wenn ich es so mache

imageP = new RawImage();
(*imageP) = obj1; // mit dem Zuweisungsoperator

geht es, wobei das ja nicht Sinn der Sache sein kann

Es ist auch völlig egal, ob im Kopierkonstruktor Code steht oder nicht,
wobei aber das Argument normal übergeben wird und ich es, zB. zur Ausgabe des Dateinamens, benutzen kann.

Weiß vielleicht jemand eine Lösung oder den Grund dafür ?

Mfg

Winnetou11
 
Hi.

Kompilier mal mit Debug Informationen und schalte die Unterbrechung bei behandelten Ausnahmen an (Menü Debug->Exceptions).

An welcher Stelle tritt der Fehler auf?

Ansonsten treten First Chance Exceptions manchmal auch außerhalb des Benutzercodes auf. Wenn diese behandelt werden passiert auch nichts - sie werden nur beim Debuggen angezeigt.

Gruß
 
Zurück