2014-09-26 49 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发布的代码。