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.

¿Por qué este sprintf_s está lanzando una excepción?

char filePrefix[] = "test";
char fileName[100]; fileName[0] = 0;
sprintf_s(fileName, "%s", filePrefix);

No puedo entender por qué hay una excepción al escribir en fileName en el sprintf_s.

Excepción lanzada en 0x00007FF885E3F3A9 (ucrtbased.dll) en foo.exe: 0xC0000005: Violación de acceso escribiendo en la ubicación 0x0000008331F00000.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basándonos en el fragmento de código proporcionado, parece que no hay nada mal con la sintaxis de la llamada a la función sprintf_s. El problema puede estar relacionado con una violación de acceso a memoria. Una posible causa podría ser que el búfer de destino (fileName) no tenga suficiente espacio para almacenar la cadena formateada. Como el tamaño del búfer está definido como 100, cualquier cadena más larga que esto llevaría a un desbordamiento del búfer y un comportamiento inesperado. Para depurar este problema, es importante verificar el tamaño de la cadena formateada y asegurarse de que quepa dentro del búfer asignado. Además, puede ser útil examinar la pila de llamadas y analizar los valores de los parámetros pasados a la función sprintf_s.

Comments are closed.