Almost certainly, you are blowing out the top of the stack.
Every time you call a function in C++ it takes an amount of space on the stack - which is recovered when the function returns - for the return address and the parameters, and more for some local variables. On a 64 bit system, the minimum stack space used is 8 bytes (64 bits for a pointer to the return location), but you also add two integers, for another 8 bytes, each time you call
collatz_calculator
.
Since you are calling it recursively, that's probably what is happening.
You can increase the stack from the default 1Mb:
PROJECT ... Properties ... Configuration Properties ... Linker ... System ... Stack Reserve Size=number of bytes required
but I'd probably look at a non-recursive solution.