2014-09-26 48 views
-1

我有一種情況如下訪問外動態創建數組,如果循環

class A 
{ 
double * array 

void function1(); 

}; 

void A :: function1() 
{ 
     if (condition) 
     { 
     array1= new double[n]; 
     fill the array1 
     } 

     **how to access the array1 here ?** 
} 
+0

你的問題是什麼? – 2014-09-26 16:39:19

+1

你不能,'array1'的範圍(我假設,因爲我沒有看到它的定義在哪裏)在'if'裏面,不可用。如果,而不是你拼錯的名字,'array1'是'array' ...那麼就簡單地使用它。我可以建議寫一個小實例嗎?用這個僞代碼不清楚你在說什麼... – 2014-09-26 16:39:25

+0

如果數組未分配,會發生什麼? – 2014-09-26 16:47:10

回答

1

定義之外if

void A :: function1() 

{ 
float *array1= null; 
if (condition) { array1= new double[n]; fill the array1 } 
cout<<array1[0]; 

} 
+1

'float * array1 [...] = new double [n];'你可能想要修正 – Erik 2014-09-26 19:36:14

0

數組您不能訪問該塊之外的局部變量。您動態分配內存。沒事兒。但問題是你正在使用一個名爲'array1'的局部變量指向內存,這個變量位於一個塊內。所以一旦你離開這個塊,你就不能訪問這個變量。所以這是內存泄漏,因爲一旦你離開塊,你無法釋放內存。

爲了不泄漏內存,您可以使用Abhi發佈的代碼。