gpt4 book ai didi

c - Fclose 导致 C 中的段错误

转载 作者:行者123 更新时间:2023-11-30 20:07:16 25 4
gpt4 key购买 nike

当且仅当我尝试关闭文件时,我才会不断收到段错误:

   FILE *outFilePtr = fopen(*(argv + 2), "w"); //open file, yes i'm sure it opens


fclose(outFilePtr); //sometime later in the program.

程序从头到尾运行都没有使用 flcose()。有什么建议吗?

gdb 上的错误重定向到这里:假设它是一个声明了所有变量的函数。gdb 还责备 strtol,我什至没有使用它。

 int t;
char line[50];

for (t = 0; t < lines; t++){
fgets(line, 50, filePtr);
strcpy(*string[t], strtok(line, " "));
*(num1 + t) = atoi(strtok(NULL, " "));
*(num2 + t) = atoi(strtok(NULL, " "));
}

内存分配函数

 void dynamicArray(int** num1, int** num2, char*** str, int size)
{
int i = 0;

*(num1) = (int*)malloc(sizeof(int) * size);
*(num2) = (int*)malloc(sizeof(int) * size);

*(str) = (char**)malloc(sizeof(char*) * size);

for( i = 0; i < size; i++){
*(*(str) + i) = (char*)malloc(sizeof(char) *size);
}

return;
}

最佳答案

为了确保确定,请检查 outFilePtr 是否不为 null:

if (outFilePtr) {fclose(outFilePtr); outFilePtr = NULL;}

我总是在关闭文件时这样做,并且我还将指针设置为 NULL 以避免尝试两次关闭同一个文件(这也可能会导致麻烦)。

但最有可能的原因是一些内存泄漏或未定义的行为,这些行为使事情变得困惑,并且段错误只是由 fclose() 触发的。

关于c - Fclose 导致 C 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14941444/

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