我在使用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
指针的取消引用。但那就是迭代器......
答案 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);
}
}}