访问字段会导致取消引用空指针

时间:2013-06-02 10:14:09

标签: c++

我在使用XCode 4.6分析代码时收到此警告,但我没有得到它。

    VanishingPointInfo* vpClosestToCenterLine = NULL;
    for (vector<VanishingPointInfo>::iterator vpInfo = lineCrossings.begin(); vpInfo != lineCrossings.end(); vpInfo++)
    {
        if (vpClosestToCenterLine == NULL || vpInfo->diffToMiddle < vpClosestToCenterLine->diffToMiddle)
        {
            vpClosestToCenterLine = &(*vpInfo);
        }
    }

XCode抱怨访问vpInfo->diffToMiddle会导致NULL指针的取消引用。但那就是迭代器......

1 个答案:

答案 0 :(得分:0)

Xcode正在标记消息以警告如果vpInfo具有空值则是错误,如果确实如此,则vpInfo内的子结构都是无效的。要修复警告,您可以在执行需要访问子结构的逻辑之前进行存在检查。 ....

   if (vpInfo) {
        VanishingPointInfo* vpClosestToCenterLine = NULL;
for (vector<VanishingPointInfo>::iterator vpInfo = lineCrossings.begin(); vpInfo != lineCrossings.end(); vpInfo++)
{
    if (vpClosestToCenterLine == NULL || vpInfo->diffToMiddle < vpClosestToCenterLine->diffToMiddle)
    {
        vpClosestToCenterLine = &(*vpInfo);
    }
}}