Function causes a crash
-
I hope something works. I’m not close to my Switch at the moment (not until next Monday actually 😢), so can’t really try out any ideas.
Maybe you can share your program, and I’m sure there is someone who can figure it out?
-
Yes I think that's what I'm going to do, because I'm really starting to run out of ideas of what could cause this...
-
The program is now live. Here is the code of you want to experience this yourself: NX29ZPFDDA. Please contact me if you have any idea of what is causing the crash.
-
When you run the program with fps meter showing your using a megabyte a second.
I put deleteshape(trailportion) after drawshape(trailportion)
And moved
Shpball = create etc
Shpground and shpnet out of the function drawsprshapes()
This slowed down the memory loss but it's still losing memory (Maybe?)
For fps go to settings then preferences and you'll see it towards the bottom
The problem your having is you are creating a new thing every time you call these functions.
This is a pretty neat program. Well done. -
Oh and it's possible for the ball can come to a complete stop.
-
@xevdev I put a timer to reset it if it doesn't move for 1 second
-
Anyway, thanks for saying it's a neat program, and thanks for the idea of deleting the shapes, because that apparently solved the issue. I don't really understand because wouldn't the old value be deleted anyway when you assign a new one to a handle ?
-
Xev is right that you’re creating new shapes hundreds to thousands of times. This may probably overrunning the video buffer maybe. I adjusted that in my copy of your program, but still have random crashes.
The major problem I see causing crashing is in your DrawTrail() you are attempting to copy an array value that is out of bounds.
‘trail[i+1] = trail[i]’
Here once every loop, i = -1
This results in trail[0] = trail[-1], the latter of which is out of bounds and it crashes. -
@Hector1945 create will create a new one apparently.
So any create should be outside of a function like the createcircle because you only need to make this once.
Within a function or loop just deleteshape() after you finished using it.
I'd say when you use create it using the same handle it would make the old handle unavailable but it would all be still there. -
Be aware that memory leaked by creating shapes and not using deleteShape() afterwards is not returned when returning to the Fuze editor. So each time you run your program, the memory will be less than before, and this will eventually cause a crash somewhere. You have to restart Fuze altogether to get the memory back.
-
So I just modified the program to delete every shape after drawing it. The free memory doesn't tick down the way it used to, so that's good, however I still get the crash...
-
Did you fix your out of bounds array access? If you comment out the line I mention, and put a debug output that shows what i equals, then -1 will be included in the list. As well, it will stop crashing with that line commented out.
-
Indeed, it stops crashing, but I need that line
-
How long before it crashes
-
Well actually, restarting Fuze seems to have fixed it ! 😅 Thanks !
-
Keep your fps/memory meter turned on!