CodeWalrus

General => General Help & Troubleshooting => Topic started by: Midnightas on February 05, 2019, 04:54:16 pm

Title: What causes "RAM leaks"?
Post by: Midnightas on February 05, 2019, 04:54:16 pm
I am writing a simple game in ez80 assembly, and every single time I run the program, my calculator's free RAM goes down a lot.
I can run the game maybe 4-5 times before it runs out and a memory error occurs.

Is my program simply not deallocated from memory, if so, how do I get it to?
Title: Re: What causes "RAM leaks"?
Post by: Midnightas on February 07, 2019, 06:07:42 am
It turned out to be me setting IY without saving the old value.
Title: Re: What causes "RAM leaks"?
Post by: rowan_futurerave on February 14, 2019, 09:44:16 pm
I'm not sure about assembler, but in C and C++ memory leaks are caused by using the calloc/malloc routines (in C) or the new operator (in C++) without using corresponding calls to free (in C) or delete (in C++).
Title: Re: What causes "RAM leaks"?
Post by: gameblabla on February 20, 2019, 08:52:04 pm
Quote from: rowan_futurerave on February 14, 2019, 09:44:16 pm
I'm not sure about assembler, but in C and C++ memory leaks are caused by using the calloc/malloc routines (in C) or the new operator (in C++) without using corresponding calls to free (in C) or delete (in C++).
You can still have RAM leaks without the use of functions like those.For example, if you attempt to access an array out-of-bound, this can easily happen.Or you can simply mess with pointers that are not allocated like this for example :
https://github.com/gameblabla/blockout2-rs97/blob/ec519dbdbe7e86b8b66dc3059ada1ffae258d105/BlockOut/BlockOut.cpp#L143 (https://github.com/gameblabla/blockout2-rs97/blob/ec519dbdbe7e86b8b66dc3059ada1ffae258d105/BlockOut/BlockOut.cpp#L143)
This is wrong on so many levels and i noticed it while porting blockout to the RS-97. There's no way it will not leak memory.
Title: Re: What causes "RAM leaks"?
Post by: rowan_futurerave on February 23, 2019, 07:05:47 am
I agree with what gameblabla says, that sort of thing technically can result in 'undefined behaviour', meaning technically your hard drive could get wiped. gameblabla is gay.