Memory-Prob.
Verfasst: 12.12.2004 00:16
Ich hab ein Prob und zwar mit dem Code:
Für die Faulen mein Debug-Output:
Und dann stürzt das Proggy ab (desswegen auch die OnError-Proc) und zwar in Zeile 36 ("CopyMemory(Buffer,Destination+Destinationlen,len)").
Wär das der einzige Fehler könnte man ja sagen mein Speicher is voll, aber er hat zu dem Zeitpunkt erst 25 KB allociert (und ein AllocateMemory(100000) funzt dann noch). Außerdem stimmt ja mit dem Output etwas nicht.. woher kommt "˜"ˆ" und "xˆ" ?
Mit Stringüberlauf kanns übrigens auch nichts zu tun haben, dann müsste ja trotzdem vorher Leerzeichen debugt werden.
Ich schätze ReallocateMemory() oder CopyMemory() funktionieren nicht richtig. Vielleicht liegts aber auch an mir oder meinem Comp. Wär also nett wenn ihr euch das mal angucken würdet.
Code: Alles auswählen
Procedure OnError()
Protected Msg$
Msg$ = "There was an error:"+Chr(13)+Chr(10)+Chr(13)+Chr(10)
Msg$ + "Description: " + GetErrorDescription()+Chr(13)+Chr(10)
Msg$ + "Addr: " + Str(GetErrorAddress())+Chr(13)+Chr(10)
Msg$ + "Module: "+GetErrorModuleName()+Chr(13)+Chr(10)
Msg$ + "LineNR: " + Str(GetErrorLineNR()+1)+Chr(13)+Chr(10)
Msg$ + "Total number of errors: "+Str(GetErrorCounter())+Chr(13)+Chr(10)
Error = getlasterror_()
tmpstring.s =Space(200)
FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM,0,Error,#LANG_NEUTRAL,@tmpstring,200,0)
tmpstring = Trim(tmpstring)
Msg$ + "GetLastError: "+tmpstring+Chr(13)+Chr(10)
Msg$ + "Continue program ?"
If MessageRequester("Error!",Msg$,16|#PB_MessageRequester_YesNo) = 6
ProcedureReturn #True
Else
End
EndIf
EndProcedure
OnErrorGosub(@OnError())
Buffer = AllocateMemory(1024)
Destination = AllocateMemory(1024)
Destinationlen = 0
i = 0
Repeat
len = 1024
PokeS(Buffer,Space(len))
ReAllocateMemory(Destination,Destinationlen + len)
CopyMemory(Buffer,Destination+Destinationlen,len)
Destinationlen + len
i + 1
Debug Str(i) +":"+ PeekS(Destination,Destinationlen)
Delay(100)
Until 0Code: Alles auswählen
1: [...viele Leerzeichen...]
2:˜"ˆ
3:˜"ˆ
4:˜"ˆ
5:xˆ
6:xˆ
7:xˆ
8:xˆ
9:xˆ
10:xˆ
11:xˆ
12:xˆ
13:xˆ
14:xˆ
15:xˆ
16:xˆ
17:xˆ
18:xˆ
19:xˆ
20:xˆ
21:xˆ
22:xˆ
23:xˆ
Wär das der einzige Fehler könnte man ja sagen mein Speicher is voll, aber er hat zu dem Zeitpunkt erst 25 KB allociert (und ein AllocateMemory(100000) funzt dann noch). Außerdem stimmt ja mit dem Output etwas nicht.. woher kommt "˜"ˆ" und "xˆ" ?
Mit Stringüberlauf kanns übrigens auch nichts zu tun haben, dann müsste ja trotzdem vorher Leerzeichen debugt werden.
Ich schätze ReallocateMemory() oder CopyMemory() funktionieren nicht richtig. Vielleicht liegts aber auch an mir oder meinem Comp. Wär also nett wenn ihr euch das mal angucken würdet.