2014-01-17 48 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數組可能包含有效值?你的價值觀應該來自哪裏?