Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
FH Super JLI'ler
Alter: 37 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 20.03.2005, 11:48 Titel: Memoryleaks |
|
|
DirectXer in Inside DirectX hat Folgendes geschrieben: | Is denn der VC++ 7.1 Compiler in der Lage, MemoryLeaks zu finden? |
Is überhaupt ein Compiler in der Lage, MemLeaks zu finden???
Noch was: Das, mit dem an die Unterschrift nen Kommentar anzuhängen is von Patrick patentuiert.
Gruß
FH, der das jetzte auch mal macht  _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 20.03.2005, 11:59 Titel: |
|
|
DirectXer hat Folgendes geschrieben: | Is denn der VC++ 7.1 Compiler in der Lage, MemoryLeaks zu finden? |
MemoryLeaks haben nichts mit Compilern zu tun sondern mit der Doofheit des Coders.  _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 20.03.2005, 12:08 Titel: |
|
|
Hehe, hab ich auch von Patrick
Patrick hat Folgendes geschrieben: | DirectXer hat Folgendes geschrieben: | Is denn der VC++ 7.1 Compiler in der Lage, MemoryLeaks zu finden? |
MemoryLeaks haben nichts mit Compilern zu tun sondern mit der Doofheit des Coders.  |
Ähme... Seite 141 im 2.Buch rechts unten im Kasten:
JLI-Spieleprogrammierung hat Folgendes geschrieben: | Einige Compiler und Compilerzusätze sind in der Lage, Memory Leaks automatisch zu lokalisieren. Leider verfügt die Edition von VC++, die dem Buch beiliegt, nicht über diese Funktionalität. Erst ab der Ausbaustufe Professional kann VC++ Memory Leaks automatisch aufspüren. |
Daher die Frage, ob der VC++ 7.1 Compiler auch Memory Leaks aufspüren kann...
Gruß DirectXer, der diese Kommentare cool findet, und sie weiterhin verwendet  |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 20.03.2005, 12:30 Titel: |
|
|
Oh man, was für ein Bullshit.... Schneid diesen Unsinn besser mit einer Schere raus.
Hier mal 3 Methoden ein Speicherleck in der größe Europas zu erschaffen:
CPP: | #include <iostream>
void foo (int *out)
{
out[55] = 5;
}
int main (void)
{
int *x = new int[5];
x[10] = 5;
foo(NULL);
::std::cin.get ();
return 0;
} |
Jeder Compiler muss diesen Code ohne warnings/errors compilieren, da Pointerhandling nicht immer konstant sein muss sondern auch variabel und der Speicher über Funktionen (sogar über Programminstanzen) hinaus gehen können, deshalb wären warnings/errors unsinnig.
Der Debugger kann helfen Memoryleaks zu finden zur Runtime, aber der Debugger ist definitiv nicht der compiler und auch nicht der linker!
Und wie schon gesagt: "MemoryLeaks haben nichts mit Compilern zu tun sondern mit der Doofheit des Coders." _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
HomeLess_PunkDrummer JLI Master Trainee

Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 20.03.2005, 13:10 Titel: |
|
|
Hö? DAs da oben sieht aber eher nach einer kräftigen Access Violation aus.  _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 20.03.2005, 13:13 Titel: |
|
|
jo, thx, hast Recht. War mir auch schon komisch, mit welcher Methode man Memory Leaks aufspüren sollte. Aber ich dachte, wenns da steht...
Und Memory Leaks mit'm Debugger zu suchen is auch net immer gut, weils ja während der Runtime is; aber solange man aufpasst...
Man könnte ja ma en Programm schreiben, dass so ein Speicherleck erzeugt und als "Virus" verschicken
Gruß DirectXer, der jetzt auf Christian wartet und sehen will, was er dazu sagt  |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 20.03.2005, 13:20 Titel: |
|
|
HomeLess_PunkDrummer hat Folgendes geschrieben: | Hö? DAs da oben sieht aber eher nach einer kräftigen Access Violation aus.  |
Ungültige Zugriffe sind die extremeren Memoryleaks der Stufe 1, da das delete fehlt (von denen es 2 Varianten gibt) entsteht ein Memoryleak der Stufe 3, die gängigeren Memoryleaks die erst nach einem Neustart verschwunden sind.
DirectXler hat Folgendes geschrieben: | Und Memory Leaks mit'm Debugger zu suchen is auch net immer gut, weils ja während der Runtime is; aber solange man aufpasst... |
Ist Sinn der Sache die nur zur Runtime zu finden, denn wie willst Du dynamik testen ohne sie zum laufen zu bringen?
Das wäre so als wenn Du KFZ Techniker wärst und es kommt jemand der sagt "Mein Auto quietscht beim Fahren" und Du fährst mit der Karre nicht mal um den Fehler genauer zu lokalisieren. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 20.03.2005, 13:55 Titel: |
|
|
Um Memoryleaks aufzuspüren kann man auch die Operatoren new und delete überschreiben.
Immer wenn new aufgerufen wird, kann man zusätzlich einen Zähler erhöhen. Bei jedem delete Aufruf wird der Zähler wieder um 1 veringert.
Am Ende des Programmes, kann man dann überprüfen wieviele Speicherbereiche nicht freigegeben wurden. Im besten Fall 0.  |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 20.03.2005, 14:12 Titel: |
|
|
Patrick hat Folgendes geschrieben: | DirectXer hat Folgendes geschrieben: | Und Memory Leaks mit'm Debugger zu suchen is auch net immer gut, weils ja während der Runtime is; aber solange man aufpasst... |
Ist Sinn der Sache die nur zur Runtime zu finden, denn wie willst Du dynamik testen ohne sie zum laufen zu bringen?
Das wäre so als wenn Du KFZ Techniker wärst und es kommt jemand der sagt "Mein Auto quietscht beim Fahren" und Du fährst mit der Karre nicht mal um den Fehler genauer zu lokalisieren. |
Ich meint, wenn de en Programm schreibst, testest du es ja erst(endweder Kompilieren( ) oder gleich Erstellen/Ausführen( )), bevor du es debugst(wenn überhaupt ) Also: Nur wenige debuggen ein frisch geproggtes Programm zuerst, wenn sie keine Angst vor MemLeaks haben(sie denken ja net gleich an so was) |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 20.03.2005, 15:59 Titel: |
|
|
direkt nichts, aber das EINE hatte nen Hintergrundgedanken, und der steht oben. Mit "mit'm Debugger zu suchen is auch net immer hilfreich" meinte ich, dass nur wenige das wirklich tun; die meisten gehn schon vorher auf Erstellen
Gruß DirectXer |
|
Nach oben |
|
 |
PeaceKiller JLI Master

Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 20.03.2005, 16:06 Titel: |
|
|
[ ] du kennst den genauen Unterschied zwischen kompilieren und debuggen
[x] du solltest dich mehr mit dem Thema beschäftigen
edit:
[x] du solltest versuchen eine klare Struktur in deine Sätze zu bringen _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 20.03.2005, 16:15 Titel: |
|
|
ok:
CPP: | struct SentenceStructure
{
operator ""...... |
ich werd mich net mehr damit rumschlagen  |
|
Nach oben |
|
 |
HomeLess_PunkDrummer JLI Master Trainee

Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 20.03.2005, 16:25 Titel: |
|
|
In Bezug auf eventuelle Memory Leaks besteht doch zwischen nur Kompilieren und direkt Ausführen gar kein Unterschied? Da sie erst zur Laufzeit auftreten?  _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
|