Memory Leakage

manaila's Avatar, Join Date: Jul 2010
Go4Expert Member
Hi,
I am developing an embedded system using C. I have a limited memory, so I sometimes run into a problem whereby my system becomes totally trashed due to memory leakage.
So I am asking for suggestions and recommendations about the sources of memory leakage and how I can avoid them.
0
seangtz's Avatar, Join Date: Jun 2008
Ambitious contributor
I hope this article will help you
http://mariusbancila.ro/blog/2010/07...-memory-leaks/
0
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
Make sure that *EVERY* memory allocation is matched by a memory free, WITHOUT EXCEPTION.
Then it won't leak.
0
manaila's Avatar, Join Date: Jul 2010
Go4Expert Member
I wish want to further the discussion. When we have something like this:
Code:
char myFunc(char* a, char* b)
{
    ...
}
then, do we still have to make memory deallocation?
0
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
There is one situation where you need to free memory, which is where you have allocated it. If you have allocated it then you MUST deallocate it (when you've finished with it). If you have not allocated it then you MUST NOT deallocate it. That's all there is to it.

It's good practice to allocate and deallocate memory within the same function wherever possible, e.g.:
Code:
void doSomething()
{
  struct summat *newThing = malloc(sizeof(struct summat));
  do_something_else(newThing);
  free(newThing);
}
If this isn't possible then it's a good idea to hand off memory management responsibility to a memory management class or family of functions, which would encapsulate the handling of that memory and make it all fairly easy to find, compared with splattering malloc calls all over the place.
0
StarDrago's Avatar, Join Date: Nov 2011
Go4Expert Member
u can use deleaker or similar debugger for search gdi and memory leaks.