Programm stürtzt nach ca. 3 Minuten ab.
-
nein ich meinte das:
char *copy_and_alloc_string(char *src) { char *ret; ret = new char[strlen(src)]; // Und HIER ist der Fehler, weil es strlen+1 heissen müsste, wegen der 0 am ende des strings! strcpy(ret, src); return ret; }
-
Warum benutzt Du nicht sprintf?
sprintf(zeit, "%02d:%02d:%02d", st.wHour, st.wMinute, st.wSecond);
Dann solltest Du gleich GetLocalTime() benutzen, dann kannste Dir das "+2" für die Stunden sparen...
An sonsten fällt mir nur auf, das Du zwar mit new Speicher holst, ihn aber nicht wieder freizugeben scheinst...
-
Der Speicher wird später (nach dem zurückliefern von 'zeit') extern verarbeitet und deleted.
PS: Es handelt sich hier um eine GUI Anwendung. Ausserdem nutze ich sehr ungern Standard-Funktionen die ich sehr leicht selber bsteln kann.
-
tolga schrieb:
PS: Es handelt sich hier um eine GUI Anwendung.
...und?
tolga schrieb:
Ausserdem nutze ich sehr ungern Standard-Funktionen die ich sehr leicht selber bsteln kann.
Oh. Ja, ich programmiere auch lieber 20 Zeilen selber anstatt eine standard-Funktion zu benutzen, die dann mit 1 einzigen Zeile auskommt...
Trotzdem reservierst Du Platz für 8 Zeichen, willst aber 13 Zeichen drin unterbringen ("00 : 00 : 00" ist nicht gleich "00:00:00")...
-
ich ahbe es zum testen auch schon mit 255er bufefrn versucht. nach ca. 3 min schmierts ab. Und 12 passt in 255. ganz sicher. Ausserdem klappts auch komischerweise mit 8er buffer und trotzdem 12 zeichen. Kann ichmir auch cniht erklären.
-
Einfach mal als "Release" statt "Debug" compilieren, dann stürzt es auch mit einem 8-Zeichen-Buffer ab.
Blackbird
-
Was sagt denn der Task-Manager bei deinem Programm zu verwendetem Speicher und Anzahl GDI-Objekte? Steigen die Werte immer weiter an -> Memory-Leak

-
Im taskmanager habe ich als erstes geschaut gehabt. Da passiert nix. Nach einmal minimieren und wieder maimieren sinkt der speicher schon auf 460kb; dann steigt er in paar sekunden auf 1400kb und bleibt konstant.
-
Hast du auch im Taskmanager die GDI-Objekt Spalte hinzugefügt? Im Menü unter Ansicht.
-
Thx asdf. Du hast es in dir!
Das ist es. ich ahbe einen Timer mit Interval=1000;
und jede sekunde kommt ein GDI-Objekt dazu. Also ahbe ich sicher einen Fehler in der WNDPROC in die WM_TIMER kommt oder in einer funktionen die aufgerufen werden bei WM_TIMER.
Werde der Sache nachgehn..
-
Dann scheinst du wohl bei jedem Aufruf neue GDI-Objekte zu erstellen, ohne diese nachher auch wieder freizugeben
