Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

119
Vistas
BAD_ACCESS_ERR en una función de copia de cadena simple en c

Estoy implementando una función básica de copia de cadenas en c así:

 void copy(char* src, char* dst) { while (*src) { *dst = *src; dst++, src++; } }

Yo lo llamo así:

 int main(int argc, char* argv[]) { char* src = "Hello World!"; char* dst = "AAAAAAAAAAAA"; printf("Source: %s | Des: %s\n", src, dst); copy(src, dst); printf("Source: %s | Des: %s", src, dst); }

Al depurar con lldb, sé con certeza que src y dst en copia son punteros válidos. Y, sin embargo, cuando se ejecuta *dst = *src , mi programa arroja un BAD_ACCESS_ERR. Como es esto posible? El compilador debe asignar estáticamente la memoria para src y dst. Ambos son del mismo tamaño en términos de longitudes de cuerda. El error ni siquiera se lanza en el carácter de terminación nula, se lanza la primera vez que se ejecuta la declaración de asignación. ¿Qué no estoy viendo? ¿Esto es específico de macOS?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

char* dst = "AAAAAAAAAAAA";

Usted define el destino para apuntar a una sección de la memoria que podría ser de solo lectura: el estándar C permite que los literales de cadena se mantengan en un segmento de solo lectura. 6.4.5p6 String literals :

  1. ... Si el programa intenta modificar una matriz de este tipo, el comportamiento no está definido.

Debe definir el destino en un montón o en un vector, que esté seguro de asignar correctamente.

 dst = malloc(SIZE);

o

 char dst[100];

En el primer caso asegúrate de llamar gratis, en el segundo caso asegúrate de no acceder después de su alcance o la fuente no tiene más de 99 caracteres+NUL.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda