美好的一天。我有这个: 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/