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

Jack Raynor

Treue Seele

  • »Jack Raynor« ist der Autor dieses Themas

Beiträge: 111

Wohnort: Korprulu Sektor BR-5-Tarsonis

Beruf: Schüler

  • Private Nachricht senden

1

29.02.2004, 14:31

Problem mit GUI

Hi,
ich hab jetzt neuerdings ein Problem mit dem Debugger! Wenn ich in der Unload() Funktion der Menüs ein Bild entladen will, mache ich das mit bsTextureManager::ReleaseTexture(...). Wenn ich dann im Spiel bin und zur Unload() Funktion komme, bringt mir das Spiel jede Menge Fehlermeldungen und das Compilerfenster (unten) bringt dann mehrere Fehler wie diesen:
memory check error at 0x016C706C = 0x00, should be 0xFD.

Hab keine Ahnung was das sein soll. Wenn ich das bsTextureManager::ReleaseTexture(...) durch BS_SAFE_DELETE ersetze kommen zwar die Fehler nicht mehr, aber dann erzählt das Programm mir das es ein Problem mit einer Datei namens 'dbgdel.cpp' gibt. Die befindet sich aber nicht mal auf meinem System!
Ich weiß das das ein schwieriges Problem ist, aber weiß jemand von euch Hilfe ??? ???
Was wäre wenn in jedem von uns ein Held stecken würde? Was wäre wenn jeder von uns als Held geboren wäre? Hättest du den Mut Held zu werden?
Legenden des Tassadar, Kapitel 3, Absatz 5

Starcraft - Battle of Races

2

29.02.2004, 18:31

Die dbgdel.cpp ist eine Datei in einer deiner DLL Files, die mit der IDE geliefert werden.

Ich könnte mir vorstellen das du Probleme mit den Zugriffsrechten deines Reservierten Speichers hast. Das kommt häufiger vor, wenn man DLL-Dateien verwendet. Wenn man Speicher in der EXE Reserviert und ihn dann in einer DLL freigeben will, kommen immer solche Fehler.

Ein anderes Problem könnte sein, das der Speicher den du freigeben willst entweder schon freigeben wurde, oder der Pointer keinen gültigen Wert hat. Prüf mal ob du nicht ein und die selbe Textur zweimal freigeben willst.

Eine dritte Möglichkeit wäre, wenn du irgendwo über ein Array hinaus schreibst. Das kann zu Nichtdefinierten Fehlferhalten deines Programms führen. So was hatte ich auch schon mal, da ist das Programm bei völlig richtigen Code einfach abgestürzt. Solche Fehler zu finden ist sehr schwer. Hab damit schon Tage verbracht. Tipp: Prüfe vor allem schleifen und fest Indexwerte für einen Array Zugriff.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

3

29.02.2004, 20:50

Hast du nicht auch ein BS_SAFE_RELEASE?
Mozilla Firefox
The Browser - reloaded

4

29.02.2004, 22:36

Wer ich?


Nö, meine Engine nutzt sein eigenes Save Release Makro. Das ist nicht auf das einfache Testen, ob die Pointervariabel != NULL ist, beschränkt.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

5

29.02.2004, 23:34

Sorry, ich meinte den Jack Raynor :D
Weil er ja BS_SAFE_DELETE benutzen will - das sieht so von der TriBase abgeschrieben (man kann auch sagen: übernommen :wirbel: ) aus...
Daher hab ich mir halt schon gedacht, dass das RELEASEn einer Textur schon besser wäre, als nur den Pointer zu SAFE_DELETEn, oder? xD
Mozilla Firefox
The Browser - reloaded

Jack Raynor

Treue Seele

  • »Jack Raynor« ist der Autor dieses Themas

Beiträge: 111

Wohnort: Korprulu Sektor BR-5-Tarsonis

Beruf: Schüler

  • Private Nachricht senden

6

01.03.2004, 18:00

Danke für den Tip!
Übrigends sind nur die kleinen Dinge von der TB-E abgeschrieben. Der Rest ist von mir ;) !
Was wäre wenn in jedem von uns ein Held stecken würde? Was wäre wenn jeder von uns als Held geboren wäre? Hättest du den Mut Held zu werden?
Legenden des Tassadar, Kapitel 3, Absatz 5

Starcraft - Battle of Races

Jack Raynor

Treue Seele

  • »Jack Raynor« ist der Autor dieses Themas

Beiträge: 111

Wohnort: Korprulu Sektor BR-5-Tarsonis

Beruf: Schüler

  • Private Nachricht senden

7

01.03.2004, 18:08

Gleich hinterher!
Ich habs mit BS_SAFE_RELEASE ausprobiert, jetzt kommen immer noch Fehler! Und wieder die gleichen Stellen wo es abstürtzt! Das mit den Speicherzugriffsdingen von Dragon Master hab ich nicht so recht verstanden, wie ich das hinkriegen soll! Wo müsste ich es denn theoretisch definiert haben (von der TB-E ausgehend), das die Engine den Speicher in der EXE reserviert?
Was wäre wenn in jedem von uns ein Held stecken würde? Was wäre wenn jeder von uns als Held geboren wäre? Hättest du den Mut Held zu werden?
Legenden des Tassadar, Kapitel 3, Absatz 5

Starcraft - Battle of Races

8

01.03.2004, 19:07

Ich kenne deinen Aufbau deiner Engine ja nicht. Der Fehler sagt aber eindeutig das es einen Speicherfehler gibt. Entweder ist der Speicherbereich, auf den der Pointer zeigt, nicht mehr gültig, oder die Instanz hat keine Rechte diesen Speicherbereich zu löschen.

@Zugriffsverletzung:
Irgendwo in diesem Forum findet man dazu mehr. Es ist eigentlich ganz einfach. Eine DLL hatt seinen eigenen Speicherbereich. Wenn speicher in der DLL reserviert wurde, gehört dieser zu dieser DLL und nur diese DLL hatt die Rechte diesen Speicher wieder freizugeben. Das gleiche gilt natürlich auch für die Executable Files.

Jedoch muss ich sagen das wohl eher Anahme 2 oder 3 zutrifft. Aus meinem obigen Posting.

Benutzt du Interfaces?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Jack Raynor

Treue Seele

  • »Jack Raynor« ist der Autor dieses Themas

Beiträge: 111

Wohnort: Korprulu Sektor BR-5-Tarsonis

Beruf: Schüler

  • Private Nachricht senden

9

02.03.2004, 17:14

Wenn du mir sagst was bei dir ein Interface ist, wäre das für mich sehr hilfreich!
Was wäre wenn in jedem von uns ein Held stecken würde? Was wäre wenn jeder von uns als Held geboren wäre? Hättest du den Mut Held zu werden?
Legenden des Tassadar, Kapitel 3, Absatz 5

Starcraft - Battle of Races

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

10

02.03.2004, 18:36

N Interface ist sozusagen eine "Vereinbarung" (von Definitionen), die eine Klasse, die dieses Interface implementiert, erfüllen muss. Wenn du Interfaces für deine Engine benutzt, kannst du beispielsweise allein die Implementation (DLL) ändern (neu kompilieren), ohne, dass du den User (Spiel) auch nochmal neu kompilieren musst, so wie es beispielsweise bei der TriBase ist.
Mozilla Firefox
The Browser - reloaded

Werbeanzeige