Error de infracción de acceso al revertir una cadena c ++ [duplicar]
Posible duplicado:
¿Por qué aparece un error de segmentación al escribir en una cadena?
La siguiente función simple debería revertir una matriz de caracteres en su lugar.
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;
}
El código compila. Pero arroja un error de tiempo de ejecución sobre la violación de acceso. Según el depurador, el culpable es la siguiente línea:
char temp = *str;
¿Alguna idea de por qué sucede?