Я думаю, проблема в том, как вы это называете, возможно, с помощью строкового литерала, что-то вроде:
reverse("This is a string");
или:
char * string = "Это строка";
задний ход (строка);
или другие незначительные изменения. В любом случае вы пытаетесь записать строковый литерал, который дает неопределенное поведение.
Поскольку вы, очевидно, используете C ++, я рекомендую использовать std::string
вместо:
void reverse(std::string &s) {
int j=s.length()-1;
for (int i=0; i<j; i++, j--) {
// ..
}
}