strcpy_s(fpsS, "FPS: ");I am not sure what strcpy_s does, but if it's anything like strcpy, you are using fpsS uninitialized.
strcpy_s(char* dest, const char* src); works like strcpy but it will fail (I think with an exception? maybe just a windows error) if it would cause an overrun.
As for the error, it looks like that address is actually 0xCDCDCDE1, which suggests that somewhere you're adding 20 to an uninitialized pointer rather than initializing it.
Just put a conditional breakpoint at the start of the function there that breaks if the pointer value is 0xCDCDCDE1 and then look at the stack to see where it's coming from.