TimingTool
-
Irgentwie muss man doch auf das System prüfen und das ist halt eben nur durch Präprosezor anweisung machbar^^
Hmm naja stimmt Timer ist ein wenig doof.
Hmm wenn double nit geht kann ich ja aus der ne Normale Klasse machen nua mit int wenns bei double nen error gibt^^Warum ich das per new mache?
Ka gewohnheit^^
Mfg Wikinger75!
-
Wikinger75 schrieb:
Ka gewohnheit^^
Mfg Wikinger75!Warum es Memory Leak, Segfaults und Buffer overflow gibt?
JA KLAR! GEWOHNHEIT!
-
Wikinger75 schrieb:
Irgentwie muss man doch auf das System prüfen und das ist halt eben nur durch Präprosezor anweisung machbar^^
Lies was ich gesagt habe. Ich sagte Präprozessor im Code sei schlecht nicht Präprozessor an sich. Man lagert solche Dinge aus. Ich habe mal den Thread rausgesucht:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-236515.htmlStartet mit etwas anderem, aber geht schnell ins entsprechende Thema über.
Wikinger75 schrieb:
Hmm wenn double nit geht kann ich ja aus der ne Normale Klasse machen nua mit int wenns bei double nen error gibt^^
Nochmals, lies was ich gesagt habe. Es gibt keinen Fehler sondern eine Warnung. Aber sag mal, hast du das nicht mal probiert? Hast du überhaupt die jeweiligen Dokumentationen zu
Sleepgelesen? Man könnte fast soweit gehen, hast du dir überhaupt was überlegt?Wikinger75 schrieb:
Warum ich das per new mache?
Ka gewohnheit^^Dann gewöhn dir immerhin an, dass man zu jedem
neweindeletemacht.Ich frag mich mehr und mehr, was das eigentlich soll.
Grüssli
-
Hmm joa eigentlich schon^^
Ich hab das delete vergesen, weil ich das von wx her gewohnt bin...
Hmm guter Thread...
Kapier aber nicht wirklich das schlimme dadran...
Ich glaub wir lassens hier einfach ma^^Mfg Wikinger75!
-
Was soll Timer eigentlich machen?
Wenn ihr ein anderes System als Windows habt probiert das mal bitte aus, obs auch da Funktioniert^^
Installiere doch einfach Linux oder so in einer virtuellen Maschine.
-
es gibt noch memory leaks wenn das programm beendet wird? dachte windows räumt das automatisch auf?
-
Ist das Ernst gemeint? Na dein Code will ich nicht sehen! Zu jedem new gehört ein delete, es gibt keine Gewissheit wann und ob überhaupt das OS deinen Speicher freigibt welchen du mal angefordert hast.
-
komisch dass ich in Qt Anwendungsbeispiele noch nie delete Schlüsselwort gesehen hab, aber lauter new-Schlüsselwörter. Anscheinend räumt Qt das alles automatisch auf
-
xBlackKnightx schrieb:
komisch dass ich in Qt Anwendungsbeispiele noch nie delete Schlüsselwort gesehen hab, aber lauter new-Schlüsselwörter. Anscheinend räumt Qt das alles automatisch auf
Die meisten QT Objekte haben wie die meisten wxWidgets Objekte einen Referenzzähler dahinter. Daher muss man sie sogar per
newanlegen, sonst gibt es massives undefiniertes Verhalten. Diese Objekte werden dann automatisch per delete freigegeben.
Aber wenn du ein Objekt von einer eigenen Klasse, wie hier zum Beispiel der Timer, erstellst, dann musst du den auch selber freigeben. Das ist unter QT nicht anders.Wieder mal ein typisches Beispiel, wieso man zuerst richtig C++ lernen sollte, bevor man an die GUI Programmierung oder ähnliches geht ...
Grüssli
-
hm äh ich hätt schon gern einen sauberen code. C++ Grundlagen lesen hab ich schon, nur kann ich mir nicht alles merken.
Wo krieg ich einen guten fertigen Mechanismus her zum deleten ?
Und die Klassen die ich neu definiere, müssen nur von diesem erben?
-
Wo krieg ich einen guten fertigen Mechanismus her zum deleten ?
häh? was willst du? Oo
-
xBlackKnightx schrieb:
hm äh ich hätt schon gern einen sauberen code. C++ Grundlagen lesen hab ich schon, nur kann ich mir nicht alles merken.
Wo krieg ich einen guten fertigen Mechanismus her zum deleten ?
Und die Klassen die ich neu definiere, müssen nur von diesem erben?

object_name* object = new object_name(); //mach was damit delete object_name;fang erstmal damit an und poste nicht so einen käse :p
-
Ich glaube eher er wollte wissen wie der mechanismus bei wx und qt geht also wie man so was machen kann das man new machen muss aber selber dan kein delete mehr

-
jhonnyDeppe schrieb:
object_name* object = new object_name(); //mach was damit delete object_name;fang erstmal damit an und poste nicht so einen käse :p
:p

auch nicht schlecht wäreobject_name* object = new object_name(); //mach was damit delete object;

-
Ich will alle Klassen da reinbinden. Damit ich nicht mehr um delete kümmern muss. Sowas ist langweilig. Sowas wie das hier, aber es soll besseres geben. Wo nur?
template <class T> class refcnt_ptr { protected: // a helper class that holds the pointer to the managed object // and its reference count class Holder { public: Holder( T* ptr) : ptr_(ptr), count_(1) {}; ~Holder() { delete ptr_;}; T* ptr_; unsigned count_; }; Holder* h_; public: // ctor of refcnt_ptr (p must not be NULL) explicit refcnt_ptr( T* p) : h_(new Holder(p)) {} // dtor of refcnt_ptr ~refcnt_ptr() { if (--h_->count_ == 0) delete h_; } // copy and assignment of refcnt_ptr refcnt_ptr (const refcnt_ptr<T>& right) : h_(right.h_) { ++h_->count_; } refcnt_ptr<T>& operator= (const refcnt_ptr<T>& right) { ++right.h_->count_; if (--h_->count_ == 0) delete h_; h_ = right.h_; return *this; } refcnt_ptr<T>& operator= (refcnt_ptr<T>& right) { ++right.h_->count_; if (--h_->count_ == 0) delete h_; h_ = right.h_; return *this; } // access to the managed object T* operator-> () { return h_->ptr_; } T& operator* () { return *h_->ptr_; } };
-
Nennt sich Garbage Collection. Aber vielleicht ist die Sprache Java eher was fuer dich.
-
Oder du nutzt die boost shared_ptr
-
Wie Firefighter sagt, Boost.SmartPr und daraus den
shared_ptr:
http://www.boost.org/doc/libs/1_39_0/libs/smart_ptr/smart_ptr.htmAllerdings, wenn du alle Objekte aller Klassen damit verwalten willst, dann machst du was falsch. Ein
boost::shared_ptrist nicht die super Lösung zu allem, vor allem nicht wenn du nur zu faul bist, ein wenig selber zu überlegen. Dann wäre vielleicht eher ein Sprachwechsel optimal. Alternativen wären zum Beispiel Java oder C#.Grüssli
-
weil es sonst quick&dirty wäre?
-
Java macht aber keine Exe^^
C# was ich gar nicht, glaub aber dafür braucht man des NET Framework, das is genauso kacke... Alles zu abhängig xD