【发布时间】:2021-11-09 05:39:15
【问题描述】:
我说它一定是这个函数,因为它在我输入一个 int 后立即停止并且它不读取 print 语句。
recipe** readAllRecipes(int numRecipes)
{
recipe** theRecipes = malloc(sizeof(recipe *) * numRecipes);
int i;
for(i = 0; i < numRecipes; i++)
{
scanf("%d", &theRecipes[i]->numItems);
printf("\n\n\t\t here in readAll for loop\n");
theRecipes[i] = readRecipe(theRecipes[i]->numItems);
}
return theRecipes;
}
【问题讨论】:
-
&theRecipes[i]->numItems那是访问无效内存。theRecipes已分配一些内存,但未分配单个theRecipes[i]条目。 -
@kaylum 哦,好吧,我需要在 for 循环中为
theRecipes[i]->numItems或theRecipes[i]分配内存... idk 我只是认为malloc(sizeof(recipe *) * numRecipes)就足够了。我不太明白:c -
可能是scanf调用的第二个参数中的操作顺序,加括号试试。
标签: c pointers struct segmentation-fault dynamic-memory-allocation