Handle frei bekommen
-
Hallo,
mit ofstream erzeuge ich ein Objekt file und habe damit einen Handle auf file.std::ofstream file; file.open("c:\\datei.txt");Damit schließe ich die auf file geöffnete Datei.
file.close();Dachte dass jetzt file automatisch gelöscht ist. Da der Handle aber noch von file exestiert kann es ja nicht gelöscht sein. Kann mir jemand sagen wie ich file ganz löschen kann und den Handle frei bekomme
-
Mit file.close schließt du zwar deine Datei, aber gelöscht wird sie danacht nicht - warum sollte er das auch machen?
Wenn du die Datei löschen willst, nimmst du am besten Funktionen des Betriebssystems z.B. DeleteFile unter Windows.
-
nein will nicht die Datei löschen sondern das Objekt file
-
Dachte mit
std::ofstream file2; file2.open("c:\\zwischen2.txt"); std::~ofstream file2;aber geht nicht da sagt er Ungültiger globaler Destruktor
-
Oliver1980 schrieb:
nein will nicht die Datei löschen sondern das Objekt file
Das Objekt wird automatisch vernichtet, wenn es "out of scope" geht.
Also z.B.
{ // <-- Scope Beginn DingDong alpha; } // <-- Scope Ende, "alpha" wurde vernichtet
-
dachte ich auch, ist aber nicht so, zu mindest bei ofstream objekten, denn die Handels da drauf sind auch noch belegt nach dem ich die Funktion verlasse. Das bringt mein BS irgendwan dazu keine Handels mehr an mein Programmm zu vergeben. Und dann gehts schief
-
Dann hast du irgendwo ein Leck oder eine fehlerhafte Implementierung. Da ich zweites erstmal ausschliessen würde, zeig uns mal etwas mehr von deinem Code.
-
Hab Fehler grad gefunden, bin davon aus gegangen dass er wenn eine Funktion verlassen wird Handle freigibt. Dem ist aber nicht so, habe alle Funktionen durchsucht und alles mit close geschlossen jetzt haut es hin.