gpt4 book ai didi

c - 指向 C 中指针的指针

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:28 25 4
gpt4 key购买 nike

我希望你能帮助我。

我在 c 中有一个函数,它接受一个文件,逐行读取并将每一行存储为一个字符串。它在这个函数中起作用

int createDownloadList(FILE **dllistref, dltask* taskList) {
...
taskList = (dltask*) malloc(tasksize*allocsize);
int num = 0;
while(getline(&line, &linesize, *dllistref) > 0) {
...
taskList[num] = task;
num++;
if(num%8 == 0) {
taskList = realloc(taskList, (num+allocsize)*tasksize);
}
}
return num;
}

但我想在函数外访问指向 taskList 的指针。我用这个改变试过了

int createDownloadList(FILE **dllistref, dltask** taskList) {
size_t linesize = 256;
char* line = (char*) malloc(linesize);
size_t tasksize = sizeof(dltask);
int allocsize = 8;
*taskList = (dltask*) malloc(tasksize*allocsize);
int num = 0;

while(getline(&line, &linesize, *dllistref) > 0) {
...
*taskList[num] = task;
num++;
if(num%8 == 0) {
*taskList = realloc(taskList, (num+allocsize)*tasksize);
}
}
return num;
}

但是我在第三个任务之后总是遇到段错误,并且不知道为什么。我希望有人能帮助我,我一无所知,为什么它不起作用。哦,这就是我在 main 方法中调用第二个函数的方式:

dltask* taskList = NULL;
numOfTasks = createDownloadList(&fileref_dllist, &taskList)

我只在调用中添加了“&”,否则与第一个函数的调用相同。

最佳答案

线

*taskList = realloc(taskList, (num+allocsize)*tasksize);

必须是

*taskList = realloc(*taskList, (num+allocsize)*tasksize);

编辑

@user3121023 发现的第二个错误是:

*taskList[num] = task;

应该是

(*taskList)[num] = task;

关于c - 指向 C 中指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35273744/

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