2

我在 valgrind 中遇到了几个错误,指的是我的代码的一部分。基本上我有一个充当队列的结构链接列表。这是我的入队功能:

PcbPtr enqPcb(PcbPtr *headofQ, PcbPtr process){
    PcbPtr c = *headofQ;
    PcbPtr d = c;
    if (!*headofQ) {
        *headofQ = process;
        return *headofQ;
    }
    while (c->next) {
        c = c->next;
    }
    c->next = process;
    return d;
}

PcbPtr 是指向结构的指针。Valgrind 在 while 循环中给了我各种各样的东西“条件跳转或移动取决于未初始化的值”等。这有什么明显的错误,还是超出了我所包含的范围?谢谢

4

1 回答 1

0

您可以考虑初始化所指内容的next成员process(如果在调用之前尚未完成enqPcb()):

PcbPtr enqPcb(PcbPtr *headofQ, PcbPtr process){
  PcbPtr c = *headofQ;
  PcbPtr d = c;
  process->next = NULL;

  ...
于 2012-06-07T10:36:07.857 回答