c - 为指向指针数组的指针分配空间

标签 c

美好的一天。我有这个: MAP_ITEM **映射我认为是指向指针数组的指针(如果我错了请纠正我),我必须为其分配空间。我可以使用 malloc 为 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);

关于c - 为指向指针数组的指针分配空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23201008/

相关文章:

从 uint16_t 转换并转换为 int16_t

c - curses 中的 halfdelay 函数有什么作用?

c 将多个参数传递给线程

c - 将节点附加到指针数组

c - 是否有适用于 char * bufs 而不是文件描述符的 readv/writev 等效项?

c - 实时多人游戏延迟补偿

c - 在 Mac OS X 上映射一个 block 设备?

C语言:“Else without a previous if”使用else-if语法计算线性系统的解时

c - 执行从 x86 程序集编译的程序时出现段错误?

c - C 程序中的指针