我正在使用静态分析工具来查找我的代码中的错误.它在解除引用之前显示错误你必须检查你的迭代器是否为NULL.我怎么检查这个?请参阅以下代码:
for(ClientThreadGroupList_t::iterator it = m_vecClientThreadGroup.begin(); it != m_vecClientThreadGroup.end(); it++)
{
nCount += (*it)->ConsoleList(pSocket); //error
}
Run Code Online (Sandbox Code Playgroud)
检查迭代器有效性已在您的代码中:
it != m_vecClientThreadGroup.end()
Run Code Online (Sandbox Code Playgroud)
请注意,通常,您无法检查迭代器是有效还是无效; 但是,当你在一个序列上进行迭代时,你知道迭代器将被解除引用,直到你到达序列的末尾.
由于您的序列显然包含指针,因此您可能还需要在解除引用之前检查它们是否为null:
if (*it) {
nCount += (*it)->ConsoleList(pSocket);
}
Run Code Online (Sandbox Code Playgroud)
请注意,这只会检查空指针; 您通常无法检查非空指针是否实际指向有效对象.