Право доступа к месту записи при работе с указателями на символ

Я пишу очень простую программу, которая удаляет повторяющиеся символы из строки. Я запустил визуальную студию и получил ошибку:

Необработанное исключение в 0x00d110d9 в inteviews.exe: 0xC0000005: Место записи нарушения прав доступа 0x00d27830.

Я действительно не понимаю, в чем проблема. текущая ячейка получает значение следующей ячейки.

void remove(char *str, char a) {
    while (*str != '\0') {
        if (*(str+1) == a) {
            remove(str + 1, a);
        }

        *str = *(str +1 );//HERE I GET THE ERROR
        ++str;
    }
}


int _tmain(int argc, _TCHAR* argv[])
{
    char *str = "abcad";

    while (*str != '\0') {
        remove(str,*str);
        str++;
    }

    std::cout << str << std::endl;

    return 0;
}

РЕДАКТИРОВАТЬ:

Я уже пытался изменить его наchar str[] = "abcad" но я все еще получаю ту же ошибку.

Ответы на вопрос(3)

Ваш ответ на вопрос