Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Timmyew

Treue Seele

  • »Timmyew« ist der Autor dieses Themas

Beiträge: 128

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

1

12.06.2021, 11:47

Memoryleak tool

Hey zusammen :),

da ich, wie bereits einige von euch wissen, aus der Delphi Ecke kommen, kenne ich mich leider was die Registrierung von c++ Memoryleak's angeht nicht so gut aus..
Ich möchte folgendes wissen:

1. Welche Tools benutzt ihr?
2. Wo bekomme ich dieses Tool her
3. Gibt es bereits ein gutes Tool in Visual Studio 2019? :)

Gruß,
Timmyew.

Jonathan

Community-Fossil

  • Private Nachricht senden

2

12.06.2021, 18:27

Modernes C++ Ressourcen-Management benutzen, wie hier beschrieben:

https://isocpp.github.io/CppCoreGuidelin…ines#S-resource

Wenn man das konsequent umsetzt sind Memory Leaks nicht möglich und man braucht keine Tools um sie zu finden. Problem gelöst.
Lieber dumm fragen, als dumm bleiben!

Timmyew

Treue Seele

  • »Timmyew« ist der Autor dieses Themas

Beiträge: 128

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

3

13.06.2021, 00:28

Ich weiß ja, dass ich nicht grad der hellste bin :(.

Ein Tool wäre für so einen inkompetenten Programmierer jedoch sehr hilfreich :(

Jonathan

Community-Fossil

  • Private Nachricht senden

4

13.06.2021, 11:06

Ich weiß ja, dass ich nicht grad der hellste bin :(.

Warte, was? Es war nicht meine Absicht, irgendetwas in diese Richtung anzudeuten...

Aber prinzipiell ist ja die Einsicht, dass man ständig Fehler macht, eine gute. Kein guter Programmierer hier würde widersprechen, dass ihm/ihr das nicht auch täglich passiert. Genau deswegen ist es ja so nützlich, wenn der Compiler dir helfen kann, deine Fehler zu finden.

Die Idee ist folgende: Du hältst dich beim Schreiben deines Codes an ein paar wenigen Stellen an ein paar einfache Regeln (hauptsächlich die oben verlinkten), und der Compiler meckert dann an jeder Stelle, wo du potentiell etwas falsch machst. Am Anfang ist es vielleicht schwer die Fehler zu verstehen, aber du kannst ja auch hier nachfragen.

Hier noch ein deutscher Artikel zum Einstieg: https://www.heise.de/developer/artikel/C…er-3919901.html

Der Vorteil ist übrigens, dass du nicht nur Leaks verhinderst, sondern ganz allgemein dein Code sinnvoller strukturiert sein wird. Es stimmt zwar, dass Dinge die move-Semantik (Objekte verschieben, statt sie zu kopieren) für den Anfang recht viel sein können, aber pff, dann schreibt man eben ein paar kleine Programme um das erstmal zu üben und zu verstehen. Dass du "zu dumm" dazu bist, glaub ich dir erst, wenn du es ernsthaft versucht hast, vorher will ich so Ausreden nicht hören :P



Ansonsten: Man kann Speicherfehler zum Beispiel mit https://drmemory.org/ finden. Aber ich benutze das eigentlich nur für die richtig kniffeligen Fehler, weil es jetzt auch nicht gerade einfach zu verwenden ist.
Zu guter Letzt: Memory Leaks sind natürlich absolut kein guter Stil, andererseits können sie auch oft einfach sehr egal sein. Spätestens wenn dein Programm beendet wird räumt das Betriebssystem eh wieder auf. Problematisch ist es nur, wenn du ständig neuen Speicher beanspruchst und irgendwann der RAM voll ist und dein Programm im Dauerbetrieb irgendwann abstürzt. Aber wenn es z.B. um sowas geht wie "beim Wechsel ins nächste Level wird das vorherige nicht freigegeben" und ein Level nur ein paar MB im Speicher benötigt und niemand viertausend Level in einer Sitzung spielt, kann das genau so gut vollständig konsequenzlos bleiben, diesen Speicher nicht wieder freizugeben. Natürlich bist du kein 'guter Programmierer' wenn du sowas mit Absicht tust, aber was ich schon ok fände wäre, sich des Problems bewusst zu sein, es dann aber ganz hinten auf die TODO Liste zu setzen, weil es momentan halt wichtigeres gibt.
Lieber dumm fragen, als dumm bleiben!

Timmyew

Treue Seele

  • »Timmyew« ist der Autor dieses Themas

Beiträge: 128

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

5

13.06.2021, 15:05

Ohje, das war nur etwas ironisch gemeint :).

Ich weiß das doch, dass du es so nicht meintest :).
Ich nehme mich bloß nur gerne selbst auf den Schoss :).

Vielen vielen dank für deine ausführliche Antwort. :)! Ich glaube, ich habe dir zu unrecht ein schlechtes gewissen gemacht ^^. Das tut mir leid!
Aber jetzt hast du mir und der Nachwelt eine gute und ausführliche Antwort hinterlassen und wirst sicherlich vielen Anfängern dabei helfen:)!

Jonathan

Community-Fossil

  • Private Nachricht senden

6

13.06.2021, 18:43

Ok, klingt gut. :thumbsup:
Lieber dumm fragen, als dumm bleiben!

FSA

Community-Fossil

  • Private Nachricht senden

7

15.06.2021, 20:04

Ich nutze dafür Visual Leak Detector (Klick!), ein Plugin für Visual Studio. Läuft auch mit der 2019 Version, obwohl nur offiziell 2015 unterstützt werden soll.
Einfach nach der Installation die Header und Lib von VLD in dein Projekt einbinden und alle Leaks werden beim Beenden im Debugger-Fenster angezeigt inklusive Verweis in welcher Zeile die Speicherreservierung war.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

15.06.2021, 20:39

Damals als ich noch aktiv war, war valgrind ziemlich gut. KA ob diese Aussage heute noch gültig ist.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Timmyew

Treue Seele

  • »Timmyew« ist der Autor dieses Themas

Beiträge: 128

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

9

15.06.2021, 20:41

Ich nutze dafür Visual Leak Detector (Klick!), ein Plugin für Visual Studio. Läuft auch mit der 2019 Version, obwohl nur offiziell 2015 unterstützt werden soll.
Einfach nach der Installation die Header und Lib von VLD in dein Projekt einbinden und alle Leaks werden beim Beenden im Debugger-Fenster angezeigt inklusive Verweis in welcher Zeile die Speicherreservierung war.


Schaue ich mir mal an :).
In meinem aktuellem mini Projekt "Super Meteoriten Game", werden die Memoryleaks wohl drin bleiben :thumbsup:.
Traue mich jetzt nicht mehr wirklich danach suchen zu gehen ^^.
»Timmyew« hat folgendes Bild angehängt:
  • 2D_Meteor_Game.png

Werbeanzeige