Der Aufruf von dbDeleteSprite findet in der onExit-Methode von MainMenuState statt. Das ist der GameState, der in der Main dem State-Manager übergeben wird. Wenn auf den Start-Button geklickt wird, dann wird ein neuer State auf den Stack gelegt und die onExit-Methode wird ausgeführt. DarkGDK arbeitet mit Handles, daher kann der Parameter nicht schuld daran sein. Es knallt ja nicht mal im DarkGDK-Code sondern in ntdll! Mein Programmteil hat sich wie gesagt seit dem 3. Feb nicht geändert, DarkGDK ist schon mehr als ein Jahr drauf und ntdll noch länger.
Nochmal zum Parameter: VC++ zeigt mir einen grünen Pfeil, beim drüberfahren sagt es mir, dass das die nächste Funktion ist, die ausgeführt wird. Also sollte der Fehler beim Aufruf davor liegen:
|
C-/C++-Quelltext
|
1
|
dbDeleteSprite(TEX_BG);
|
TEX_BG ist definiert als
|
C-/C++-Quelltext
|
1
|
static const int TEX_BG = 1;
|
Keine Pointer, die eine Zugriffsverletzung auslösen hätten können. Ich weis wirklich nicht mehr weiter.
-p246
EDIT:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
ntdll.dll!_RtlpCoalesceFreeBlocks@16() + 0x1167 Bytes
ntdll.dll!@RtlpFreeHeap@16() + 0x10b Bytes
ntdll.dll!_RtlFreeHeap@12() + 0x54ed Bytes
kernel32.dll!_HeapFree@12() + 0x14 Bytes
RPGGame1.exe!free(void * pBlock=0x1246ebc0) Zeile 110 C
RPGGame1.exe!CSpriteManager::DeleteJustOne() + 0x11 Bytes C++
RPGGame1.exe!CSpriteManager::Delete() + 0x28 Bytes C++
RPGGame1.exe!CSpriteManager::GetList() + 0x1a8e Bytes C++
RPGGame1.exe!dbDeleteSprite() + 0xa Bytes C++
RPGGame1.exe!MainMenuState::onExit() Zeile 41 + 0x7 Bytes C++
|
EDIT2:
Die Funktion, auf die der Pfeil zeigt ist übrigens
|
C-/C++-Quelltext
|
1
|
dbDeleteSprite(TEX_BTN_START);
|
TEX_BTN_START ist definiert als (wer hätte es gedacht)
|
C-/C++-Quelltext
|
1
|
static const int TEX_BTN_START = 2;
|