mal ne ganz blöde frage zum aufräumen von speicher
-
Hallo zusammen,
ich bin gerade am überlegen, was eigentlich mit dem Speicher passiert, wenn ich bei einem std::string die c_str() Methode aufrufe. Also ich habe folgenden Code:
std::string fileName = "abc.txt"; FILE * handle = fopen(fileName.c_str(), "r"); ...Nun gibt c_str() ja ein char * zurück. Aber ich räume ihn ja nicht mittels delete auf. Heißt das, ich erzeuge an der Stelle Speichermüll??
Vielen Dank.
-
Was steht denn dazu in der Dokumentation zu c_str?
-
Hallo,
nur das der Pointer auf ein interne Struktur zeigt und read only ist. Ok, dass sollte dann also heißen, dass ich ihn besser nicht lösche, da sonst der orginal String nicht geht. Alles klar.
Notiz an mich selbst. Lesen, denken, lesen, nochmals denken, dann posten.
Tut mir leide

-
std::string fileName = "abc.txt"; FILE * handle = fopen(fileName.c_str(), "r");Warum so umständlich?
char const* fileName = "abc.txt"; FILE * handle = fopen(fileName, "r");wenn der filename sowieso hart codiert ist?
-
Wie wäre es damit, in C++ fopen gar nicht erst zu benutzen?
Das klingt schon wieder so nach einem "C + string = C++"-Kurs.

-
SeppJ schrieb:
Wie wäre es damit, in C++ fopen gar nicht erst zu benutzen?
Dann benutzt man fstream und hat genau das gleiche Problem, oder hat man da inzwischen einen std::string annehmenden Konstruktor nachgelegt?
-
Bashar schrieb:
Dann benutzt man fstream und hat genau das gleiche Problem, oder hat man da inzwischen einen std::string annehmenden Konstruktor nachgelegt?
In C++11 ja.
Ändert aber nichts daran das man in C++ unabhängig davon zu fstream greifen sollte, und nicht zum C-Pendant(sofern nicht etwas wirklich Gutes dagegen spricht).