I don't think "releasing for free" is a specific enough criterium.
First of all, according to U.S. copyright laws (I don't even want to venture into international interpretations!), a work is copyrighted once it has been "fixed in a tangible medium." That pretty much means that once a piece of code has been saved to a hard drive, it is copyrighted by its author.
Unless there is some sort of license attached to the code that specifies who has permission to use it, and under what circumstances, then it is NOT free for you to use. The only way you can be legally safe to reuse someone's code for free is if they have given specific permission to do so.
Therefore, if you write a piece of code and do not want anyone to use it without your permission or without paying you, they may not reuse it. You have every right to be angry with someone that abuses the priveledge.
However, to be sure to protect yourself legally (and so that you have a leg to stand on in court), you should attach some sort of license to any completed piece of code you create. You took the time to create and perfect your code, you should take a little more time and protect it, or at least specify what people may do with your code. You should do this even if you want to give it away for free.
Licensing is a complex subject. If you would like more information, go to http://www.gnu.org/philosophy/license-list.html. Just be prepared to do a LOT of reading!