Ошибка нарушения доступа при обращении строки c ++ [дубликат]

Возможный дубликат:

Почему при записи в строку возникает ошибка сегментации?

Следующая простая функция должна обратить массив символов на место.

void reverse(char* str)
{
    char* last = str;

    // find end of the string
    while(*last) {
        ++last;
    }

    // swap characters until the pointers meet in the middle
    while(str < last)
    {
        --last; 
        char temp = *str;
        *str = *last;
        *last = temp;
        ++str;
    }
}

int main()
{
    char* a= "Hello";
    reverse(a);
    return 0;
}

Код компилируется. Но он выдает ошибку времени выполнения о нарушении доступа. По словам отладчика, виновником является строка ниже:

char temp = *str;

Есть идеи, почему это происходит?

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

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