我们如何为返回char分配内存**

时间:2014-04-18 15:56:13

标签: c pointers return malloc return-value

我有方法......

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

可以做..

char** allStrings = getStrings()?

或者我必须做一些像......

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

请同时参阅函数合同以访问所有这些字符串以及解除分配。

你可能会得到一个NULL - 终止的0数组 - 终止的字符串,但是重新分配可能会更棘手。

可能的释放选择:

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