A small lesson I've learned on this project:
If you're porting code to Windows from Linux, use valgrind (a memory access checker) extensively before attempting to do anything on Windows! Linux is very forgiving about things like writing one beyond the end of an array. Windows is very unforgiving about this. If you have any significant errors in valgrind with out of bounds accesses, the code is quite likely to crash in creative and obscene ways on Windows.
So check your memory accesses.
Also, new char(16) is NOT the same as new char. Just... in case you were wondering. *whistles*