Re: WriteData and Invalid memory access
Posted: Wed Feb 16, 2022 3:43 pm
Time to a bug report or maybe a feature request 
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
testVar=9
Debug PeekB(@testvar) ;9
Debug PeekA(@testvar) ;9
Debug "----"
testVar=128
Debug PeekB(@testvar) ;-128
Debug PeekA(@testvar) ;128
Debug "----"
testVar=255
Debug PeekB(@testvar) ;-1
Debug PeekA(@testvar) ;255
Debug "----"
testVar=256
Debug PeekB(@testvar) ;0
Debug PeekA(@testvar) ;0
Code: Select all
testVar=9
ShowMemoryViewer(@testVar, SizeOf(Integer))
Debug PeekB(@testvar) ;9
Debug PeekA(@testvar) ;9
Debug "----"
testVar=128
ShowMemoryViewer(@testVar, SizeOf(Integer))
Debug PeekB(@testvar) ;-128
Debug PeekA(@testvar) ;128
Debug "----"
testVar=255
ShowMemoryViewer(@testVar, SizeOf(Integer))
Debug PeekB(@testvar) ;-1
Debug PeekA(@testvar) ;255
Debug "----"
testVar=256
ShowMemoryViewer(@testVar, SizeOf(Integer))
Debug PeekB(@testvar) ;0
Debug PeekA(@testvar) ;0
Hellonetmaestro wrote: Tue Feb 15, 2022 9:38 pm Probably a limitation of WriteData(). This works:Code: Select all
Global gigs.q = 4*1024*1024*1024 ; 4 Gigabyte *MemoryID = AllocateMemory(gigs) If *MemoryID > 0 FillMemory(*MemoryID,gigs,255,#PB_Byte) If CreateFile(0,GetTemporaryDirectory()+"\Text.txt") FileBuffersSize(0,#MAXWORD) *writeptr=*MemoryID *end = *MemoryID + gigs While *writeptr < *end If *end-*writeptr >= #MAXWORD chunksize = #MAXWORD Else chunksize = *end-*writeptr EndIf WriteData(0, *writeptr, chunksize) *writeptr + chunksize Wend FlushFileBuffers(0) CloseFile(0) EndIf EndIf
Code: Select all
Global.q gigs = (4*1000)*1024*1024
*MemoryID = AllocateMemory(gigs)
FillMemory(*MemoryID,gigs,255,#PB_Byte)
CreateFile(0,"Text.txt")
WriteData(0, *MemoryID,(gigs/2))
WriteData(0, *MemoryID+gigs/2,gigs/2)
CloseFile(0)
Code: Select all
*maxMem = AllocateMemory(1 << 29)Code: Select all
*maxMem = AllocateMemory(1 << 28) ; 256 MBCode: Select all
*maxMem = AllocateMemory(1 << 24) ; 16 MBCode: Select all
Structure miTable
baseMem.I[0]
EndStructureCode: Select all
Structure miTable
Array *baseMem(0)
EndStructureCode: Select all
; factice example
CopyMemory(*a1st256MBmem + x, *a1st256MBmem + y, CopySize)
ReadData(File, *a2nd256MBmem, LoadSize)
PokeI(*a16MBmem + a, PeekI(*a16MBmem + b) + myAdd)