c - 为什么此代码在动态分配期间会崩溃?

标签 c malloc

我在下面有这段代码片段,它在动态分配“str”中的分配过程中崩溃。

  char *str;
  int file_size;
  FILE *fptr;
  if (!(fptr = fopen(filename, "r"))) goto error1;
  if ((fseek(fptr, 0L, SEEK_END) != 0)) goto error2;
  if (!(file_size=ftell(fptr))) goto error2;
  if ((fseek(fptr, 0L, SEEK_SET) != 0)) goto error2;
  str =  (char*)malloc(file_size+1);
  if (fread(str, file_size, 1, fptr) != 1) {
    free(str);
    goto error2;
  }
  str[file_size] = '\0';
  fclose(fptr);

file_size 是非零、非负的小于 140 的值

我正在使用 ARM。这实际上适用于我的英特尔电脑,但不适用于 arm 机器。

最佳答案

您可以在手册中看到这一点 - ftell() 在出错时返回 -1,而不是零。

关于c - 为什么此代码在动态分配期间会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/954965/

上一篇:c 自由提问

下一篇:c++ - memcmp 排序

相关文章:

c++ - 解析和修改 LLVM IR 代码

c - 为什么函数会生成负数?

c - 我应该将指针更改为数组吗?

c++ - 此代码似乎在分配范围之外附加字符

c - 在 C 中函数调用的参数之间添加注释可以吗?

c - 将项目推送并附加到 C 中的链接列表中

关闭文件描述符然后使用它

c - 重复调用后 realloc() 失败

c - malloc 未使用指向指针的指针正确分配

c - 如果 malloc 失败了怎么办?