为指针数组指定空间

时间:2014-04-21 16:03:57

标签: c

美好的一天。我有这个:MAP_ITEM **映射我认为是指针数组的指针(请纠正我,如果我错了请),我必须为它分配空间。我可以使用malloc为1指针分配空间,但不知道如何做到这一点。帮助将非常感激。

2 个答案:

答案 0 :(得分:1)

以下是一个示例 ,编写与char **一起使用,但您可以根据需要进行修改:

char ** allocMemory(char ** a, int numStrings, int maxStrLen)
{
    int i;
    a = calloc(sizeof(char*)*(numStrings+1), sizeof(char*));
    for(i=0;i<numStrings; i++)
    {
      a[i] = calloc(sizeof(char)*maxStrLen + 1, sizeof(char));
    }
    return a;
}    

这样称呼 :(对于10个字符串的数组,每个字符串最多包含79个字符(留下一个用于NULL术语)

char **arrayOfString;

arrayOfString = allocMemory(arrayOfString, 10, 80);

//

您还需要 使用allocMemory

创建的免费内存
void freeMemory(char ** a, int numStrings)
{
    int i;
    for(i=0;i<numStrings; i++)
        if(a[i]) free(a[i]);
    free(a);
}  

像这样称呼

freeMemory(arrayOfStrings, 10);

答案 1 :(得分:0)

导入stdlib.h 然后使用malloc函数。 一维数组的示例在哪里:

int* my_in_array = (int*) malloc(sizeof(int) * size_of_my_array);

请注意,malloc接收您要分配的字节数,因此sizeof将告诉您数据类型需要多少字节(在本例中为int,但它可以用于字符,结构......)和然后我将它乘以size_of_my_array,这是我的数组中元素的数量。

现在,请尝试为您解决此问题。