Red de conocimiento informático - Material del sitio web - Cuando i=1, printf(''%d'',L.elem[i]) genera un número incierto

Cuando i=1, printf(''%d'',L.elem[i]) genera un número incierto

Según mis años de experiencia en programación, ¿verificó dos veces la matriz L de estructuras que definió para verificar si alguna de las matrices estaba fuera de los límites? Si hay una matriz fuera de límites, cuando use la instrucción printf para generar el elemento elem [i] en la matriz de estructura L, se generará un número indefinido.

Por ejemplo, defina una matriz de enteros: int my_number[20]; /*Los subíndices válidos de la matriz son 0 - 19 */

Para otro ejemplo, defina un nuevo tipo de datos:

typedef struct my_struct

{

int elem[] />

Este es un nuevo tipo de datos. 100] ;

}MY_DATA ;

MY_DATA L ;

Acerca de L.elem: sus subíndices de matriz válidos son 0 - 99, es decir: L. elem [0] - L.elem[99].

Luego puedes volver a verificar si hay una asignación de memoria dinámica o una fuga de datos en el programa. Si su programa es correcto cuando i tiene cualquier otro valor, pero incorrecto cuando i=1, entonces hay muchas posibilidades de que se trate de una fuga de datos en lugar de un problema de diseño del programa. Los programas de depuración pueden llevar mucho tiempo y ser tediosos.