gpt4 book ai didi

c - *** 错误 `./threads' : corrupted double-linked list: 0x00000000009bb240 *** in fclose

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:17 34 4
gpt4 key购买 nike

我需要编写一个程序,首先从文本文件中读取一个矩阵并将其存入内存。我能够这样做,但是当我尝试用 4 行或更多行的矩阵关闭文件时,它给出了错误:* `./threads' 中的错误:损坏的双链表:0x0000000001b4e240 *读取文件的代码是:

    void leitura_matriz1 ()
{
char linha_s[MAX_LINHA];
char *buffer;

// leitura da primeira matriz
FILE * matriz1_file;
matriz1_file = fopen ("in1.txt","r");
if (matriz1_file == NULL)
{
printf ("Erro na abertura do arquivo\n");
exit(1);
}

// número de linhas
fgets(linha_s, MAX_LINHA, matriz1_file);
buffer = strtok(linha_s, " =");
buffer = strtok(NULL, " =");
linhas_mat1 = atoi(buffer);

// número de colunas
fgets(linha_s, MAX_LINHA, matriz1_file);
buffer = strtok(linha_s, " =");
buffer = strtok(NULL, " =");
colunas_mat1 = atoi(buffer);

// aloca espaço para a matriz
matriz1 = (int**) malloc(linhas_mat1 * sizeof(int));
if (matriz1 == NULL)
{
printf("erro memória");
exit(1);
}
int lin, col;
for (lin = 0; lin < linhas_mat1; lin++)
{
matriz1[lin] = (int*) malloc(colunas_mat1 * sizeof(int));
if (matriz1[lin] == NULL)
{
printf ("erro memória 2");
exit(1);
}
}

// lê os valores do arquivo e coloca na matriz em memória
for (lin = 0; lin < linhas_mat1; lin++)
{
fgets(linha_s, MAX_LINHA, matriz1_file);
buffer = strtok(linha_s, " ");
for (col = 0; col < colunas_mat1; col++)
{
matriz1[lin][col] = atoi(buffer);
buffer = strtok(NULL, " ");
}
}

fclose (matriz1_file);
}

文件格式是这样的:

LINHAS = 4
COLUNAS = 3
5 5 5
5 5 5
5 5 5
5 5 5

LINHAS 是行和 COLUNAS 列当文件仍处于打开状态时,我在关闭文件时从未遇到过错误。并且只有当文件超过 3 行(4 行或更多行)时才会发生。有人知道它可能是什么吗?

最佳答案

第一次分配不正确。而不是:

matriz1 = (int**) malloc(linhas_mat1 * sizeof(int));

应该是:

matriz1 = (int**) malloc(linhas_mat1 * sizeof(int*));

异常消息(8 字节)似乎指示 64 位应用程序,因此指针为 8 字节,而 sizeof(int) 可能只有 4 字节。这会导致在填充数组时覆盖内存。

关于c - *** 错误 `./threads' : corrupted double-linked list: 0x00000000009bb240 *** in fclose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349270/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com