返回 malloc 的函数中的 C 错误



我得到了一段 C 代码,被问到的问题是它有什么问题?我会很好回答,但是malloc cast前面的星号让我感到困惑!

char f() { return *(char*)malloc(10); }

该函数返回不确定的值,并且由于未释放动态分配的内存而存在内存泄漏。

此代码存在几个问题:

  • 取消引用 malloc 的返回值,而不检查它是否为 NULL。 因此,如果malloc失败,这将导致 NULL 指针取消引用,并可能导致核心转储。
  • 假设malloc成功,它返回的内存不会初始化为任何内容。 该函数取消引用指针并返回分配内存中的第一个字节,该字节再次未初始化。 这意味着该函数返回一个未初始化的字符。
  • malloc返回的指针不会保存在任何位置。 这会导致内存泄漏。

相关内容

  • 没有找到相关文章

最新更新