es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

SIGSEGV utilizando snprintf

Siempre obtengo un error de segmentación cuando uso snprintf mientras que printf funciona correctamente.

Ejemplo:

int main(){
    while(1){
        uint8_t tmp = 3;
        printf("test %u", tmp); // <-- SALIDA CORRECTA
        char * str = "            ";
        snprintf(str, 10, "test %u", tmp);  //  <-- SIGSEGV
    }
    return 0;
}

¿Cuál es el problema?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema es que snprintf se está utilizando para escribir datos en un puntero, str, que no ha asignado ningún espacio de memoria. Esto provoca un error de Violación de Segmento, ya que el programa está intentando acceder a memoria a la que no tiene permiso. En cambio, printf imprime directamente en la consola y no requiere asignación de memoria, por eso funciona sin problemas. Para solucionar el problema, se debe asignar memoria para str antes de utilizarlo con snprintf.

Comments are closed.