gpt4 book ai didi

c - 重新分配指针数组

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:47 24 4
gpt4 key购买 nike

这是我的计划的一部分。 parameters.path 是一个字符串,其中包含我将使用的文件的路径,但此代码中没有。

typedef struct directory {

char *name;
char *path;

} directory;

void insertDir(directory*** array , char * path, char* name, int* length) {

directory *p = malloc(sizeof(directory));

p->path = malloc(strlen(path)+ 1);
strcpy(p->path, path);

p->name = malloc(strlen(name)+ 1);
strcpy(p->name, name);

*array = (directory**) realloc( *array , (*length) * (sizeof(directory*)));
*array[(*length)] = p;
(*length)++;

}

int main(int argc , char** argv) {

directory** array = NULL;

int lenght = 0;

while(true) {
insertDir(&array, parameters.path, name , &lenght);
}

return 0;
}

它在第三次 realloc 上失败并出现段错误。你能帮帮我吗?

最佳答案

当执行 realloc() 时,您需要将长度加 1,因为您还没有递增它。

*array = realloc( *array , (*length + 1) * (sizeof(directory*)));

您还需要更改:

*array[(*length)] = p;

到:

(*array)[*length] = p;

因为下标运算符的优先级高于解引用运算符。请参阅 C 运算符优先级表 here . [] 中也不需要括号。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com