2014-01-17 29 views
0

我有一个应用程序已接近完成,正在以下错误WHE运行分析:分析仪警告:分配的值是垃圾或未定义

Assigned value is garbage or undefined 

错误是发生在这行代码:

float flowSourceValue = flowSource[count]; 

当运行调试器时,代码会输入this for循环,floatSourceValue会被赋值。

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

您的flowSource数组永远不会获得初始化值或有效值。 –

+0

你认为flowSource数组中的值应该是什么,你正在定义和数组withtablecount的大小... –

+0

如果你想数组初始化,所以所有的值都为零,你可以这样做:'memset(flowSource ,0,sizeof(flowSource));'。 – rmaddy

回答

3

本地阵列

float flowSource[gaugeCount]; 

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

0

该警告是告诉你的是,分析事物有有在您的线

float flowSourceValue = flowSource[count]; 

将被执行的执行路径,但在等号右边的表达式是初始化。

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

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