【问题标题】:How do we allocate memory for returning a char**我们如何分配内存来返回一个字符**
【发布时间】:2014-06-03 04:08:04
【问题描述】:

我有办法……

char** getStrings(); 将返回一个指向 char 指针的指针。

有可能吗..

char** allStrings = getStrings()?

或者我必须做类似...

char** alStrings = malloc(sizeof(char*) * numberOfStrings);
allStrings = getStrings()
//where numberOfStrings is some int.

【问题讨论】:

  • 除非你喜欢寻找内存泄漏,否则完全避免后者。
  • 最后一个很奇怪——但在变量名中的拼写错误被修复之前是无害的。

标签: c pointers return malloc return-value


【解决方案1】:

第一个显然是正确的。
第二个,修正错字后,等于第一个加上内存泄漏。

还请参阅函数合同以访问所有这些字符串并进行解除分配。

您可能会得到一个由0 终止的字符串组成的NULL-终止数组,但解除分配可能更棘手。

可能的重新分配选择:

  • 静态数据,多线程/递归/多调用陷阱,不需要也不允许显式释放。
  • 全部在一个块中,只释放主指针。
  • 必须单独释放每个组件。

【讨论】:

    【解决方案2】:

    如果getStrings() 为您分配,那么char **allStrings = getStrings() 当然可以。

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 2017-09-15
      相关资源
      最近更新 更多