Hi alle!
Ich versuche mich in der Programmierung mit Direct3D.
Der untenstehende Code wird anstandslos kompiliert und gelinkt.
Allerdings bekomme ich bei der Ausführung eine Fehlermeldung zu einem unerlaubten Speicherzugriff.
Wenn ich unten makierte Codezeile (der Übeltäter) auskommentiere, bekomme ich keinen unerlaubten Speicherzugriffsfehler mehr. Allerdings entsteht dann doch auch ein Memory-Leak, oder?
Ich kann beim besten Willen keinen Fehler sehen. Zumal der Code mit einem Buch erarbeitet wurde und nun nahezu vollständig in mein Programm eingeflossen ist.
// Auflisten alles auf dem System verfügbaren Direct3D-Adapter
#include <StdIO.h>
#include <D3D9.h>
int g_iNumAdapters;
PDIRECT3D9 g_pD3D = NULL;
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char acAdapterInfo[1024];
char acTitle[64] = "Grafikkarte gefunden";
// Direct3D initialisieren
g_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
if(g_pD3D == NULL) {
// Fehler
MessageBox(NULL,"Fehler beim Erzeugen der D3D-Schnittstelle!","Fehler",MB_OK | MB_ICONEXCLAMATION);
return 1;
}
// Anzahl der Grafikkarten
g_iNumAdapters = g_pD3D->GetAdapterCount();
D3DADAPTER_IDENTIFIER9* g_pAdapters = new D3DADAPTER_IDENTIFIER9[g_iNumAdapters];
for(int iAdapter = 0; iAdapter < g_iNumAdapters; iAdapter++) {
if(FAILED(g_pD3D->GetAdapterIdentifier(0, 0, &g_pAdapters[g_iNumAdapters]))) {
// Keine Grafikkarte
MessageBox(NULL, "Keine Grafikkarte gefunden.", "Achtung!", MB_OK | MB_ICONEXCLAMATION);
// Direct3D freigeben
g_pD3D->Release();
delete[] g_pAdapters;
}
sprintf_s(acAdapterInfo,"Grafikkarte: %s",g_pAdapters[g_iNumAdapters].Description);
MessageBox(NULL, acAdapterInfo, acTitle, MB_OK | MB_ICONINFORMATION);
}
// Direct3D freigeben
g_pD3D->Release();
// ####################################
delete[] g_pAdapters; // DER ÜBELTÄTER
// ####################################
// ####################################
// ####################################
// ####################################
// ####################################
return 0;
}
MfG H☼psel
--
"It's amazing I won. I was running against peace, prosperity, and incumbency."
George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
"It's amazing I won. I was running against peace, prosperity, and incumbency."
George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)