With /Og (global optimization) enabled (default in Release builds), a function's parameters change their addresses if, and only if, the function catches an exception.
The addresses of local variables remain unaltered. All function parameters become invalid upon entering the catch block; reading or writing them typically results in an access violation or in a corruption of the program's internal state.
In one case, the function parameter's addresses were shifted by +20 bytes, in another, they were rebased to 0x8bffffa0.
Disabling global optimization fixes the problem, but results in poor performance.