Registro de error: CORRUPCIÓN HEAP DETECTADA: después del bloqueo normal

Bug Record Heap Corruption Detected

Primero publique la imagen original del informe de error:
Lo revisé y todos dijeron que era un acceso fuera de los límites, lo que provocó que se informara de este error cuando se liberó la memoria dinámica. Pero después de que verifiqué el código varias veces y no encontré fuera de los límites, lo encontré adivinando. . .
Primero mire el siguiente fragmento de código para probablemente restaurar mi código de error:

|_+_|

struct test{ char data[2] } test *t = (struct test *)malloc(sizeof(struct test)) fscanf(fp, '%d%d', t->data + 0, t->data + 1) con char Debido a que la relación entre los valores ASCII se puede mezclar, estoy acostumbrado. Para evitar el problema de leer y escribir caracteres individuales en la lectura y escritura de archivos, quiero usar int Formato de entrada leído int
Resulta que char No hay verificación de tipo interna. Los datos se leen y copian exactamente de acuerdo con el tipo especificado en la cadena de formato, es decir, a un fscanf Copiar una parte de la dirección char El tamaño de los datos. Debido a que mi computadora es little-endian y int Al almacenar, se almacena en forma de complemento de datos enteros de acuerdo con el valor ASCII (todos los bits altos positivos truncados no perderán datos), así que siga char El tipo es normal al leer datos, ¡pero el último elemento de la matriz estará fuera de los límites al escribir datos!