Hallo Leute,
diesmal eine relativ kurze Frage, aber ich komm nicht drauf.
Wie kann ich den << Operator von if- sowie ofstream benutzen, wenn der stream auf dem Heap erzeugt wurde, ich also nur per Zeiger darauf zugreifen kann?
Folgendes lässt sich zwar kompilieren, erzeugt komischerweise allerdings nur durch die pure Anwesenheit im Code Heap-Errors. Selbst wenn die Funktion, falls sie denn doch irgendwo aufgerufen werden sollte (und ich habs vllt. übersehen), vor dem Code Stück per return abbricht. Lasse ich das return drin, mache aber das Code Strück unten dran weg funktioniert alles, obwohl sich die Funktion gleich verhalten sollte, aufgrund des returns.
Kurz: Es tritt eine Heap-Corruption auf, bevor dieser Operator benutzt bzw. überhaupt dieses Objekt erst erzeugt wurde. Und zwar an Stellen, die eigentlich 100%ig funktionieren und richtig sind. So tritt zum Beispiel ein Fehler beim Laden eines PNGs auf, falls der Code nicht auskommentiert wurde.
Hier der Code, wie ich es probiert habe:
|
C-/C++-Quelltext
|
1
2
|
std::ofstream *stream = new std::ofstream (filename);
*stream << "bla bla" << std::endl;
|
Wäre schön, wenn mir jemand zeigt wies richtig geht
Falls jemand dazu noch ne Erklärung zu dem oben geschilderten Problem hat, umso besser, für mich ist das nämlich alles andere als logisch, dass das Codestückchen nur durch seine Anwesenheit Fehler verursacht.
Ach ja ich benutze VS C++ 2010 Express, falls das hier wichtig sein könnte.
lg chaia