【问题标题】:Malloc a char *** [duplicate]Malloc a char *** [重复]
【发布时间】:2017-10-21 07:36:54
【问题描述】:

我正在为我的学校制作外壳,实际上我正在研究管道|。为了解析,我需要将一些东西放在char *** 中。我如何mallocchar ***

【问题讨论】:

  • 一般来说,很难回答询问如何分配指针的问题,因为它们可以用来指向不同类型的对象(你是直接指向另一个指针吗?或者你是在分配一个数组双指针?还是完全其他的东西?)。如果您想获得有意义的答案,您应该澄清您的问题。另外,请记住being called a Three-Star Programmer is not usually a compliment。如果您觉得需要使用三重间接,您可能应该停下来重新考虑一下您的解决方案。

标签: c char malloc


【解决方案1】:

malloc 不关心你将使用它的返回值作为什么类型。所以你可以mallocchar*** 就像你malloc 一样。

大多数时候,您将尝试动态分配一段时间T 的数组,您需要将其存储在T* 类型的变量中。因此,如果您需要一个char** 数组(例如,一个argv 向量数组),您可以将它们存储在char*** 类型的变量中。 (Tchar** 所以 T*(char**)* 这是 char***。)

做malloc的一般形式是:

T* result = malloc(number_of_elements * sizeof(*result));

如果您像这样编写malloc 调用,那么您可以在不更改 malloc 调用的情况下更改结果的类型。

请记住,malloc 返回的内存区域不会以任何方式初始化。如果您正在分配一个数组数组,您可能希望使用

确保分配的内存被初始化为零
T* result = calloc(number_of_elements, sizeof(*result));

在任何情况下,您都需要单独分配子数组。

【讨论】:

    猜你喜欢
    • 2020-01-28
    • 1970-01-01
    • 2020-02-27
    • 2021-08-28
    • 2023-03-14
    • 2010-09-29
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    相关资源
    最近更新 更多