problema por diferencia C a C++
Publicado por lupulus (1 intervención) el 25/01/2007 19:45:37
Alguien me puede explicar por qué, o cómo se produce el siguiente error en tiempo de ejecución:
void f()
{
char * p="Plato";
p[4]='e'; //error en tiempo de ejecución, violación del acceso a memoria
}
Según Stroustrup es un error intentar modificar un string literal mediante un puntero en C++, pero según mi forma de pensar no le veo sentido, sencillamente no lo entiendo. Podría ser que estemos intentando modificar un const char, pero entonces el error sería en compilación, y me sorprende que lo de en ejecución, cuando solo tiene que modificar un elemento bien referenciado de la memoria. No lo entiendo
¿Alguién me puede aclarar esto? Gracias
void f()
{
char * p="Plato";
p[4]='e'; //error en tiempo de ejecución, violación del acceso a memoria
}
Según Stroustrup es un error intentar modificar un string literal mediante un puntero en C++, pero según mi forma de pensar no le veo sentido, sencillamente no lo entiendo. Podría ser que estemos intentando modificar un const char, pero entonces el error sería en compilación, y me sorprende que lo de en ejecución, cuando solo tiene que modificar un elemento bien referenciado de la memoria. No lo entiendo
¿Alguién me puede aclarar esto? Gracias
Valora esta pregunta


0