
12/10/2012, 07:53
|
| | Fecha de Ingreso: junio-2010 Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 8 meses Puntos: 73 | |
Respuesta: strcat(char*,char*) crash! ¿El empleo de fsdefine en strcat es correcto, o es un error mecanográfico y debería ser vsdefine?
Si es correcto, habría que ver dónde se declara fsdefine y qué uso de hace de él antes de llegar a esta porción de código.
Si es un error mecanográfico, la línea correcta sería
srcat(vsdefine, glsl_source);
En tal caso, resulta que vsdefine ha sido declarado como un puntero que apunta a la cadena fija "#define COMPILING_VS\n". Al hacer el strcat, le estás añadiendo más cosas, pero ya en una zona de memoria que no pertenece a vsdefine. En resumen, estás sobreescribiendo encima de otras cosas, y no sabes qué, dónde ni cómo estás haciéndolo. En C no hay comprobación de los límites de los arreglos, eso es algo que corre por cuenta del programador. Y en este caso, aunque sea código C++, estás manejando cadenas al estilo C. La solución, en principio, es dimensionar vsdefine con un tamaño suficiente para que pueda guardar lo que le pidas.
Saludos, |