Я пишу функцию для вызова main, которая выделяет память для нескольких указателей, объявленных в main. Я узнал, что могу сделать это, используя указатель на указатель или ссылку на указатель, но у меня проблема с освобождением этих воспоминаний в main. пожалуйста, помогите мне с тем, что не так в следующем коде:
1. используя указатель на указатель:
void fun1(int **a, double **b, char **c)
{
*a=new int[20];
*b=new double[20];
*c=new char[10];
for (int i=0;i<20;i++){
(*a)[i]=i;
(*b)[i]=sqrt((double)((*a)[i]));
}
*c="0123456789";
}
int _tmain(int argc, _TCHAR* argv[])
{
int *a;
double *b;
char *c;
fun1(&a,&b,&c);
cout<<"a & b are:"<<endl;
for(int i=0;i<20;i++)
cout<<a[i]<<"\t"<<b[i]<<endl;
cout<<"c is: "<<c<<endl;
delete[] a;
delete[] b;
delete[] c;
return 0;
}
2. используя ссылку на указатель:
void fun1(int*& a, double*& b, char*& c)
{
a=new int[20];
b=new double[20];
c=new char[10];
for (int i=0;i<20;i++){
a[i]=i;
b[i]=sqrt((double)a[i]);
}
c="0123456789";
}
int _tmain(int argc, _TCHAR* argv[])
{
int *a;
double *b;
char *c;
fun1(a,b,c);
cout<<"a & b are:"<<endl;
for(int i=0;i<20;i++)
cout<<a[i]<<"\t"<<b[i]<<endl;
cout<<"c is: "<<c<<endl;
delete[] a;
delete[] b;
delete[] c;
return 0;
}
Большое спасибо!