分析器警告:分配的值是垃圾或未定义

时间:2014-01-17 16:41:58

标签: ios objective-c xcode instruments

我有一个接近完成的应用程序,运行Analyze时出现以下错误:

Assigned value is garbage or undefined

这行代码发生错误:

float flowSourceValue = flowSource[count];

运行调试器时,代码DOES输入for for循环,并且floatSourceValue DOES被分配。

if(gaugeReportsCFS){
    count = 0;
    gaugeCount = [flowKeys count];
    float tally = 0.0;
    float flowSource[gaugeCount];
    for (NSString *key in flowKeys){
        float flowSourceValue = flowSource[count]; //assigned value is garbage or undefined
        if(flowSourceValue < 1){
            gaugeReportsCFS = NO;
            gaugeReportsFeet = YES;
        } else {
            if(!isnan(flowSource[count])){
                flowSource[count] = [[rvrGauge.gaugeFlowList objectForKey:key] integerValue];
                tally += flowSource[count];
            }
        }
        count++;
    }
}

我得到这个警告的原因是什么?谢谢!

2 个答案:

答案 0 :(得分:3)

本地数组

 float flowSource[gaugeCount];

未初始化,因此可以包含“垃圾”。访问它是未定义的行为。

答案 1 :(得分:0)

警告告诉你那里的分析器是你的行

的执行路径
float flowSourceValue = flowSource[count];

将被执行,但是equals右侧的表达式未初始化。

看看你的代码,这是完全正确的。在堆栈上声明一个数组flowSource,然后开始尝试从新定义的数组中获取值。从该数组获得的值将是分配给该数组的内存中的垃圾值。

是什么让您认为您的flowSource数组可能包含有效值?你的价值应该来自哪里?