Well, you either didn't hear your friends all that right, or their knowledge of ram leaks is minimal. But uncle chase is here to save the day A program will often need to allocate small chunks of your RAM to store various information - user input, files it reads off the disk, structures to pass to the windows API, etc. This is done most simply through the malloc() standard c library call, which returns a void pointer to the memory it allocated.
One of the bugs a program can have is a memory leak. When you allocate a chunk of memory, it becomes your program's responsibility to tell the operating system when you're done with it. You do this by passing the same void pointer you got from malloc() to free(). By "freeing" the RAM, you're no longer allowed to use it.
Imagine that over time any program had to periodically allocate a small amount of RAM when it got a network connection or something like that. If the program doesn't free the RAM it's using, eventually, the system resources will begin to exhaust. Windows usually responds to this a lot worse than Unix because of the way the operating systems differ in handling memory.
While an overheating computer can potentially cause any number of defects, such as a failed free() call, there are some more "common" things overheating can cause.
Lagging does sort of indicate some form of memory exhaustion. Do you have ECC memory? It's possible that the heat was causing errors to occur - with some hardware, this can be caught but a 'retry' has to occur.
As for the "128" down to "112", that sounds suspiciously like part of the RAM is beginning to fail.
What are your system specs? What size power supply?
I also recommend this article for more on these matters:
http://boomgames.com/dyndoc.php/10compcrash