您已定义此结构typdef:
typedef struct{
int pid;
int valor;
}hijo;
但是在为它保留内存后,我迭代数组为每个结构赋值,但是值没有正确存储:
hijo *retorno;
retorno=malloc(processes*sizeof(hijo));
while (processes > 0) {
pid = wait(&status);
int valors = WEXITSTATUS(status);
retorno[i].valor=valors;
retorno[i].pid=pid;
--processes; // TODO(pts): Remove pid from the pids array.
}
感谢。
答案 0 :(得分:1)
您需要初始化并增加i
。否则,您将继续分配给相同的数组元素。
hijo *retorno;
retorno=malloc(processes*sizeof(hijo));
int i = 0;
while (processes > 0) {
pid = wait(&status);
int valors = WEXITSTATUS(status);
retorno[i].valor=valors;
retorno[i].pid=pid;
--processes; // TODO(pts): Remove pid from the pids array.
i++;
}
或者您可以将i
与processes
进行比较,而不是更新两个变量:
for (int i = 0; i < processes; i++) {
pid = wait(&status);
int valors = WEXITSTATUS(status);
retorno[i].valor=valors;
retorno[i].pid=pid;
}
答案 1 :(得分:-1)
使用此代码,您正在减少processes
,并且您希望为retorno分配值。
那么retorno[i]
应该是retorno[processes]
对吗?
否则我不明白你想做什么。