【问题标题】:valgrind error Invalid read of size 8valgrind 错误 读取大小为 8 的无效
【发布时间】:2015-07-06 10:55:42
【问题描述】:

所以我让 valgrind 在这个函数中抱怨这个错误:

int getMembersNum(Party party){
    assert(party != NULL);
    int i = 0;
    while (party->members[i] != NULL && i < party->maxMembersNum) <-- HERE
            i++;
    return i;

}

Party 是一个指向结构的指针,party-&gt;members 的类型是 char**。当使用malloc 初始化时,所有party-&gt;members 单元格都设置为NULL。

我错过了什么?

【问题讨论】:

  • valgrind 认为其中一个成员指针未初始化。也许你有一个错误

标签: c memory-leaks malloc valgrind


【解决方案1】:

您需要在使用前进行测试。

while (party->members[i] != NULL && i < party->maxMembersNum)

应该是

while (i < party->maxMembersNum && party->members[i] != NULL)

【讨论】:

  • 解决了 17 个错误中的 14 个。现在解决其他 3 个问题(在不同的函数中有相同的问题)。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多