What is the difference between run time errors "Stack overflow.", "Access violation writing location 0x00000000." and "Stack around the variable 'w' was corrupted."

Stack overflow is when you put too much stuff on the stack. It's usually triggered by excessive recursion. Access violation to 0x0 is when you try to write to a null pointer. Stack corruption is a little more subtle. It happens when you do someting like write beyond the bounds of an array and mess up bookkeeping information stored on the stack.