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?
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 parastr
antes de utilizarlo consnprintf
.