Kopien von Zeigern erstellen?
-
Hallo zusammen!
Erstmal ein bisschen Code#include <iostream> #include <ctime> using namespace std; int main() { time_t *currentTime = new time_t; time(currentTime); tm *zeit = localtime(currentTime); int temp = zeit -> tm_sec; delete zeit; delete currentTime; return 0; }
Ich erstelle doch AFAIK eine Kopie von zeit -> tm_sec, deswegen müsste ich danach doch den Speicher freigeben können. Aber irgendwie bekomme ich (dadurch?) einen Laufzeitfehler.
Kann mir da vielleicht einer sagen, warum?Danke im voraus
Caipi
-
Caipi schrieb:
time_t *currentTime = new time_t; time(currentTime); tm *zeit = localtime(currentTime); int temp = zeit -> tm_sec; delete zeit; delete currentTime;
zeit wurde nicht mit new alloziert, darf also auch nicht mit delete freigegeben werden. Lies die Dokumentation von localtime, wo das zurückgegebene Objekt liegt (es ist statisch).
Ich erstelle doch AFAIK eine Kopie von zeit -> tm_sec, deswegen müsste ich danach doch den Speicher freigeben können.
Den Satz versteh ich nicht. zeit->tm_sec ist ein int. Davon kannst du hundert Kopien machen, warum solltest du da irgendwas freigeben? Was hat das mit zeit zu tun?
-
@Bashar
Danke! Jetzt habe ich mir mal ganz genau die Funktion localtime() angeschaut. Jetzt funktioniert allesCaipi