【问题标题】:Advice on using pointers for malloc and free关于使用 malloc 和 free 指针的建议
【发布时间】:2020-10-25 07:02:59
【问题描述】:
    char arr[120];
    for (k = 0; k < 120; ++k) {
        arr[k] = (char *)malloc(1);
    }
    for (k = 0; k < 120; ++k) {
        free(arr[k]);
    }

我有上面的代码。我想知道为什么在编译和运行代码时会出现分段错误错误。有什么改变的建议吗?

我只想指出,上面的代码是针对学校项目的。

【问题讨论】:

  • C 语言中不需要强制转换 malloc 的输出。见stackoverflow.com/questions/605845/…*%20type。
  • 您的编译器抱怨您的代码。注意你的编译器。它比你更了解 C。

标签: c pointers malloc free


【解决方案1】:

您将char* 对象存储到一个只能存储char 对象的数组中。那是未定义的行为。你需要:

char* arr[120];

【讨论】:

  • 我希望现代编译器默认将此类错误视为致命错误并提供有意义的诊断消息。
猜你喜欢
  • 2014-11-06
  • 2016-12-29
  • 2011-12-03
  • 2019-03-29
  • 2015-12-27
  • 2017-05-13
  • 1970-01-01
  • 2011-04-14
  • 2016-07-30
相关资源
最近更新 更多