我有一个接近完成的应用程序,运行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++;
}
}
我得到这个警告的原因是什么?谢谢!
答案 0 :(得分:3)
本地数组
float flowSource[gaugeCount];
未初始化,因此可以包含“垃圾”。访问它是未定义的行为。
答案 1 :(得分:0)
警告告诉你那里的分析器是你的行
的执行路径float flowSourceValue = flowSource[count];
将被执行,但是equals右侧的表达式未初始化。
看看你的代码,这是完全正确的。在堆栈上声明一个数组flowSource,然后开始尝试从新定义的数组中获取值。从该数组获得的值将是分配给该数组的内存中的垃圾值。
是什么让您认为您的flowSource数组可能包含有效值?你的价值应该来自哪里?