hallo leute..
gestern nocht hab ich mich am beispiel auf s.37 versucht.. und naja.. habs nicht fertig gemacht.
heute setz ich mich hin und wills erledigen... am anfang compiliere ich nochmal alles und schau was läuft.. und naja.. auf einmal kommt halt so:
HEAP[S37.exe]: Heap block at 00E22888 modified at 00E228C4 past requested size of 34
Windows hat einen Haltepunkt in S37.exe ausgelöst.
Dies kann auf eine Beschädigung des Heaps zurückzuführen sein und weist auf ein Problem in S37.exe oder in einer der geladenen DLLs hin.
Weitere Analyseinformationen finden Sie möglicherweise im Ausgabefenster.
HEAP[S37.exe]: Invalid Address specified to RtlValidateHeap( 00E20000, 00E22890 )
Windows hat einen Haltepunkt in S37.exe ausgelöst.
Dies kann auf eine Beschädigung des Heaps zurückzuführen sein und weist auf ein Problem in S37.exe oder in einer der geladenen DLLs hin.
Weitere Analyseinformationen finden Sie möglicherweise im Ausgabefenster.
"S37.exe": "C:\WINDOWS\system32\SSSensor.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
S37.exe hat einen Haltepunkt ausgelöst.
wisst ihr was das soll?
hier noch der source code:
|
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
55
56
57
58
59
60
61
62
|
#include <windows.h>
#include <TriBase.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd)
{
//Initialisieren der Engine
tbInit();
//Logbucheintrag
tbWriteToLog("Übung v. Buch S.37\n");
tbWriteToLog("Ins Logbuch schreiben!");
/*Speicher resevieren mit Zufallszahlen füllen,
und Inhalt der Beiden letzten Speicherbereiche vertauschen */
int* pData1 = (int*)tbMemAlloc(6);
tbWriteToLog("Speicher reserviert: ....... %d", tbMemGetSize(pData1));
int* pData2 = (int*)tbMemAlloc(12);
tbWriteToLog("Speicher reserviert: ....... %d", tbMemGetSize(pData2));
if (!pData1) {}
if (!pData2) {}
//Größe abfragen
int iSize = tbMemGetSize(pData1);
tbWriteToLog("Größe von pData1 abgefragt: ....... %d",tbMemGetSize(pData1));
//pData vergrößern
pData1 = (int*)tbMemReAlloc(pData1, -6);
tbWriteToLog("pData1 um 5 Bytes vergrößern: ....... %d", tbMemGetSize(pData1));
if (!pData1) {}
//Kontrollieren ob der Speicherbereich gültig ist
tbWriteToLog("Kontrolle ob Speicherbereiche für pData1 und pData2 gültig sind");
if(!tbMemIsValid(pData1)) {tbWriteToLog("Speicherbereiche ungültig");}
tbWriteToLog("Speicherbereiche gültig");
//SPEICHERBEREICH MIT ZUFALLSZAHLEN FÜLLEN
tbWriteToLog("pData1 ##########################################");
int i=0;
for (i; i < 12; i++)
{
pData1[i] = tbIntRandom(0,100);
tbWriteToLog("%d----%d",i,pData1[i]);
}
tbWriteToLog("pData2 ##########################################");
i=0;
for (i; i < 12; i++)
{
pData2[i] = tbIntRandom(0,100);
tbWriteToLog("%d----%d",i,pData2[i]);
}
//Speicher von pData wieder freigeben
TB_SAFE_MEMFREE(pData1);
//Herunterfahren der Engine
tbExit();
return 0;
}
|
wenn ich tbExit() aufrufe, wird der haltepunkt hier gesetzt
ist tbExit() ausgeklammert.. tritt der gleiche fehler wieder auf ... jedoch bei makro TB_SAFE_MEMFREE
kann mir da vllt. wer helfen?
[/cpp][/code][/quote]