Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Probleme mit free/delete

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.10.2005, 01:09 Uhr
samson



Hi,

wenn ich von einer Methode einer Instanz eine neue Instanz der selben Klasse zurückgebe und diese dann später (im DEBUG-Mode) mit delete oder free löschen will, stürzt das Programm ab. Vorher kann ich ohne Probleme auf die Instanz zugreifen. Der Dekonstruktor wird beim delete auch einwandfrei durchlaufen. Der Absturz erfolgt genau nach Beendigung des Dekonstruktors.

Die Implementierung der Klasse erfolgte in original C++ (kein C#) und liegt in einer DLL. Die erste Instanz wurde von der EXE auf dem Heap erzeugt.

Hier ein stark vereinfachter Code:
class X {
...
X* getIrgendwas() {
return(new X());
}
}

void main() {
X* x = new X();
X* y = x->getIrgendwas();

...

delete x; //funktioniert
delete y; // CRASH!!!
}

Kennt jemand eine Lösung des Problems? Mein Dank im vorraus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.10.2005, 09:22 Uhr
(un)wissender
Niveauwart


Es heißt Destruktor, nicht Dekonstruktor. Es heißt int main und nicht void main. Wolltest du das wissen?
Ansonsten ist der Code in Ordnung (es fehlt ein Semikolon für class x). Muss dann an irgendwas dll-spezifischem liegen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.10.2005, 09:40 Uhr
Pler
Einer von Vielen
(Operator)


sowas kann auch an irgendwelchen Speicherverletzungen im vorherigen Code liegen. Das ganze Programm läuft weiter und stürtzt erst ab wenn man das ganze freigibt.
Also ich hatte sowas auch schon (Allerdings bei MFC) keine Ahung warum das so ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.10.2005, 09:46 Uhr
(un)wissender
Niveauwart


jupp
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.10.2005, 10:02 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


freigeben von datenbereichen aus einer dll gibt meist einen crash, wenn du das freigeben in der dll machst, funktioniert es normalerweise.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.10.2005, 19:39 Uhr
(un)wissender
Niveauwart


Äh, Blödsinn?
Sorry, aber ich kann mir nicht vorstellen, dass das stimmt.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.10.2005, 09:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hat ich häufig jedenfalls das problem, das dann free bzw delete an der stelle mit ner av abgestürzt ist, sobald ich dann das freeen in der dll ausgeführt hab war der fehler weg. Evtl ists auch der VC der da bischen rumspackt
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.10.2005, 10:47 Uhr
(un)wissender
Niveauwart


Das wäre sehr schlecht von dem Vc.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: