Pointers
BlitzMax Forums/BlitzMax Beginners Area/Pointers
How do I convert a pointer back?
I have:
DrawImage(ImagePTR,X,Y,FrameNum)
Where ImagePTR is a pointer to a tImage type, but I get an error that it can't convert to tImage.
I've Tried:
DrawImage(ImagePTR[0],X,Y,FrameNum)
and I didn't get an error but my computer locked.
I figured it out, I had loaded the image into a local Object which must have been automatically destroyed, so when I referenced it via a pointer the program crashed.
Image.TImage is not a pointer in the BlitzMax sense, a pointer would be defined as
local myimageptr:TImage ptr
and to pass the actual object reference to DrawImage would require
DrawImage myimageptr[0],x,y
DrawImage myimageptr[0],x,y locks my pc, must be something wrong with above code.
I figured it out, I had loaded the image into a local Object which must have been automatically destroyed, so when I referenced it via a pointer the program crashed.
hmmm, For iFrame=0 To FramesTotal should be FramesTotal-1, but my guess is FramesTotal=0
also, in BlitzMax all object references are pointers so there is no point in your use of pointers, from what I can see they are only going to introduce severe reference counting problems without introducing any benefits
I wanted to be sure by keeping a reference to a TImage type in my type that I wasn't holding an extra memory since that same TImage type may be used in multiple copies of my type.. If that makes any sense to ya. But if its just storing a pointer and not like copying the objects contents into my type, then I guess there is no reason for it. Keeping it a non-pointer would probably help with the garbage collection as well.. Seems like the Garbage Collection doesn't take into account pointers and can delete stuff on ya.