Free() is the C equivalent of the C++ operator delete. It returns memory to the system (see writeup above). It often fills in memory with a special value, such as "f7f7f7f7", "deadbeef", "badf00d" or (whatever the implementation is), so that you can detect in a memory manager / debugger whether or not you have free'd something already. Yet another really good reason to initialize memory before you use it.