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

riCo

Treue Seele

  • »riCo« ist der Autor dieses Themas

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

1

15.01.2006, 20:14

delete macht Probleme beim Löschen von Arrays

Hallo,
ich reserviere den Speicher wie folgt:

C-/C++-Quelltext

1
D3DADAPTER_IDENTIFIER9* pAdapter = new D3DADAPTER_IDENTIFIER9[iNumAdapter];


Das klappt alles einwandfrei. Nun möchte ich den Speicher freigeben:

C-/C++-Quelltext

1
delete[] pAdapter;


Zu meinem Problem. Führe ich das Programm aus und komme an die Stelle wo der den Speicher löschen soll, bringt erfolgenden Fehler:
Unbehandelte Ausnahme bei 0x7c911230 in Game.exe: Benutzerhaltepunkt.

Kann mir da jemand Helfen??


LG Rico

Anonymous

unregistriert

2

15.01.2006, 20:15

C-/C++-Quelltext

1
2
3
4
5
if (pAdapter != NULL)
{
    delete[] pAdapter;
    pAdapter = NULL;
}
Sicher ist sicher.

riCo

Treue Seele

  • »riCo« ist der Autor dieses Themas

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

3

15.01.2006, 20:33

Hi. Hilft mir in dem Moment leider auch nicht weiter, da pAdapter != NULL ist.
Könnte das vielleicht an irgendwelchen Debugparametern o.ä. liegen? Ich verwende das 2003er .NET. Hab hier irgendwo gelesen das der Speicher vorher NULL gesetzt werden muss, damit das geht. Nur wie mach ich das bei Arrays ohne jedes Element einzeln ansprechen zu müssen?

4

15.01.2006, 20:38

Zitat von »"riCo"«

Unbehandelte Ausnahme bei 0x7c911230 in Game.exe: Benutzerhaltepunkt.
Sieht so aus, als ob du irgendwo n Haltepunkt zum Debuggen gesetzt hast.
Mein Projekt: Rise of the Sylvan

riCo

Treue Seele

  • »riCo« ist der Autor dieses Themas

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

5

15.01.2006, 20:44

Nein. Alle Breakpoints sind gelöscht.

Schaut mal hier. Das selbe Problem wie ich und die Lösung wäre, die Variable NULL zu setzen.
https://www.spieleprogrammierer.de/phpBB…utzerhaltepunkt

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

6

15.01.2006, 20:47

Zitat von »"nix da"«

C-/C++-Quelltext

1
2
3
4
5
if (pAdapter != NULL)
{
    delete[] pAdapter;
    pAdapter = NULL;
}
Sicher ist sicher.


Hä? Der Standard garantiert, dass delete auf einen Null-Pointer angewendet keinen Effekt hat. Der Test ist also doppelt gemoppelt.


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
if (pAdapter != NULL)
{
    if (pAdapter != NULL) { // nur um sicher zu gehen, das er sich beim letzten mal nicht geirrt hat


       if (pAdapter != NULL) { // ich bin ein wenig paranoid, deshalb lieber einma zu viel, als einmal zu wenig

          delete[] pAdapter;
          // pAdapter = NULL;   nagut, so'n Quatsch mach ich dann aber doch nicht

      }
   }
}
Why is 6 afraid of 7?
Because 7 8 9

riCo

Treue Seele

  • »riCo« ist der Autor dieses Themas

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

7

15.01.2006, 21:25

Ich hab es mal mit einem char-Array versucht und da halt es geklappt mit dem löschen. Ich hab es zwar jetzt erstmal anders gelöst, aber mich interessiert trotzdem wie man dieses Problem lösen kann.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

15.01.2006, 21:33

Das pORblem kann entstehen, wenn z.b. über den Gültigkeitsbereich geschriben wurde. Kommentier mal alles zwischen den new und delete aus dann geht es wieder, wetten?
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.

riCo

Treue Seele

  • »riCo« ist der Autor dieses Themas

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

9

15.01.2006, 22:06

NOX: Du hast die wette gewonnen. Zu dumm das ich das nicht probiert habe.. Danke :-)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

15.01.2006, 22:08

Und das im total müden Zustand, wie man an meinem Schriftbild sehr schön sehen kann :angel:
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.

Werbeanzeige