Salve, ho un problema. Sembra essere un errore di deallocazione poichè l'array World mi funziona per tutto il programma, ma alla fine il programma prima di chiudersi si blocca. Ecco il codice:
InitGame():
HRESULT InitGame(void) {
static int i, j, k;
static MSG msg;
static long lTime;
static D3DMATERIAL9 Mtrl;
srand(time(NULL));
ZeroMemory(&Mtrl, sizeof(D3DATERIAL9));
ZeroMemory(&msg, sizeof(msg));
Mtrl.Ambient.r = Mtrl.Diffuse.r = 1.0f;
Mtrl.Ambient.g = Mtrl.Diffuse.g = 1.0f;
Mtrl.Ambient.b = Mtrl.Diffuse.b = 1.0f;
pD3DD -> SetMaterial(&Mtrl);
pD3DD -> SetRenderState(D3DRS_LIGHTING, TRUE);
pD3DD -> SetRenderState(D3DRS_AMBIENT, 0x00080808);
pD3DD -> SetRenderState(D3DRS_FOGENABLE, FALSE);
State = S_LOADING;
FPS = 30;
lTime = clock();
xTransCamera = (float)xd / 2.0f;
zTransCamera = (float)zd / 2.0f;
// BEGIN ENGINE
if (IfFirstTime == TRUE) {
if (FAILED(InitMesh())) return E_FAIL;
World = new WORLD**[xd];
for (i = 0; i < xd; i++) {
World[i] = new WORLD*[yd];
for (j = 0; j < yd; j++) {
if (clock() >= lTime + (long)(1000.0f / 30.0f)) {
if (FAILED(DrawD3DScene())) return E_FAIL;
lTime = clock();
SetupKeys();
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
if (msg.message == WM_QUIT) {
PostQuitMessage(0);
return S_OK;
}
}
}
World[i][j] = new WORLD[zd];
}
}
IfFirstTime = FALSE;
}
/*
Ecc...
*/
return S_OK;
}
KillD3DWindow():
HRESULT KillD3DWindow(HWND hWnd) {
static int i, j;
for (i = 0; i < xd; i++) {
for (j = 0; j < yd; j++) {
delete[] World[i][j];
}
delete[] World[i];
}
delete[] World;
/*
Ecc...
*/
return S_OK;
}
WORLD è una struct formata da due BYTE (Value e Options). xd, yd e zd sono le dimensioni impostate del mondo (xd = zd = 200, yd = 50). pD3DD è il device Direct3D (che non vi interessa). State è lo stato del gioco (usato in DrawD3DScene()). FPS sono i FPS. xTransCamera, yTransCamera e zTransCamera sono la posizione della telecamera. IfFirstTime è una variabile che non vi interessa. World è l'array di WORLD con dimensioni xd, yd e zd, dove riscontro il problema.
Debug:
0 - 7C911231 - ntdll!DbgUiConnectToDbg() - C:\WINDOWS\sy... -
1 - 7C97C943 - ntdll!RtlpNtMakeTemporaryKey() - C:\WINDOWS\sy... -
2 - 7C96DB9C - ntdll!RtlZeroHeap() - C:\WINDOWS\sy... -
3 - 00000000 - 0x093aafa0 in ??() - -
4 - 00000000 - 0x093aafa0 in ??() - -
5 - 00000000 - 0x003f0000 in ??() - -
6 - 00000000 - 0x093aafa0 in ??() - -
7 - 00000000 - 0x0022fbd4 in ??() - -
8 - 7C97CD11 - ntdll!RtlpNtMakeTemporaryKey() - C:\WINDOWS\sy... -
Qualche suggerimento?