valgrind错误读取大小为8

时间:2015-04-27 20:11:06

标签: c memory-leaks malloc valgrind

所以我有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->members的类型为char**。使用malloc初始化时,所有party->members个单元格都设置为NULL

我错过了什么?

1 个答案:

答案 0 :(得分:1)

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

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

应该是

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