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

1

03.03.2012, 18:32

Zugriffsverletzung tbMemAlloc

Hey,
ich habe das Problem, dass wenn ich Speicher mit tbMemAlloc reservieren will, erhalte ich einen Fehler:

"Unbehandelte Ausnahme bei 0x100cddd2 in Projekt.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000004."

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <windows.h>
#include "TriBase.h"


int WINAPI WinMain(HINSTANCE Instance, HINSTANCE PrevInstance, char* pcCommandLine, int iShowCommand)
{
    // Variablen
    MSG Message;                    // Nachricht
    DWORD dwStartTime, dwEndTime;   // Zeiten deklarieren
    float fTime = 0.0f;             // Verbrauchte Zeit
    void *pData = tbMemAlloc(100);  // 100byte Speicher reservieren

    // Größe abfragen
    int iSize = tbMemGetSize(pData);

    // Speicherbereich erweitern
    pData = tbMemReAlloc(pData, -200);

    // Speicher wieder freigeben
    TB_SAFE_MEMFREE(pData);


    // Engine initialiseren
    tbInit();

    // Nachrichtenschleife
    ZeroMemory(&Message, sizeof(MSG));
    while(Message.message != WM_QUIT)
    {
        // Startzeit erfassen
        dwStartTime = timeGetTime();
        fTime = (float)(dwStartTime);
        tbWriteToLog("Anfangszeit %.2f", fTime);

        // Eventuelle Nachricht verarbeiten
        while(PeekMessage(&Message, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&Message);
            DispatchMessage(&Message);
        }
        // Endzeit erfassen
        dwEndTime = timeGetTime();
        tbWriteToLog("Endzeit %.2f", fTime);

        // Verbrauchte Zeit ermitteln
        fTime = (float)(dwEndTime-dwStartTime);

        tbWriteToLog("Verbrauchte Zeit %.2f", fTime);
        Message.message = WM_QUIT;
    }
        tbExit();

    return 0;
}


Danke schonmal für die Hilfe :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chris13« (03.03.2012, 18:51)


2

03.03.2012, 19:24

Schon mal mit dem Debugger drüber gegangen?

MfG
Check

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

3

03.03.2012, 20:58

Das kommt glaub ich beim Debugger, hattes öfters, ich glaube du hast eine .lib nicht gelinkt

4

03.03.2012, 20:59

Noch nicht ich schau gleich mal wenn ich die neue SDK installiert habe. Die alte von der CD hat mich nerven gekostet^^.

5

03.03.2012, 22:02

Nein leider klappt es immer noch nicht.
Libs habe ich alle gelinkt so wie es im Buch stand.
-Tribase lib
-Microsoft SDK lib
-Microsoft DirectX SDK lib
Im Release stürzt es sofort ab.
Und im Einzelschrittmodus komm ich auch keinen Schritt weiter da er ab dieser Stelle mir zugriffsfehler ausgibt.

FSA

Community-Fossil

  • Private Nachricht senden

6

03.03.2012, 22:37

Wenn ich nicht irre musst du vor Allem was du machst tbInit() aufrufen!

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

7

03.03.2012, 23:01

Wenn ich nicht irre musst du vor Allem was du machst tbInit() aufrufen!


Danke dir hab dich lieb xD.
Ja das hat funktioniert. Habe garnicht darüber nachgedacht, dass er ja dafür die Engine zuvor aufgerufen haben muss.

FSA

Community-Fossil

  • Private Nachricht senden

8

03.03.2012, 23:08

Zitat

Danke dir hab dich lieb xD

:crazy:

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige