Prosleđivanje 2D niza s alokacijom
02.06.2010. u 21:15 · pre 199 meseci
#1
Imam problem s 2D nizom čija "dublja" dimenzija treba da se alocira van procedure u kojoj je deklarisan i u kojoj se alocira "plića" dimenzija. Donji code je esencija problema (jako pojednostavljeno u odnosu na original). Varijanta 1 je ono sto provereno radi O.K., a varijanta 2 je ono sto mi treba, ali dobijam crash s C++/MinGW pod Qt-om.
Ima li neko ideju gde grešim kod varijante 2?
Code:
//VARIJANTA 1
void cfunc(int j, int &k, double **Niz)
{
//...
k = 15;
Niz[ j ] = new double[ k ];
for( int i = 0; i < k; i++ ) Niz[ j ][ i ] = i;
//...
}
void bfunc(int j, int &k, double **Niz)
{
//...
cfunc(j, k, Niz);
//...
}
void main()
{
//...
double **Niz;
int Dim1 = 10, k;
Niz = new double*[ Dim1 ];
for( int j = 0; j < Dim1; j++ )
{
bfunc(j, k, Niz);
//...
}
}
//VARIJANTA 2
void cfunc(int &k, double *Niz_j)
{
//...
k = 15;
Niz_j = new double[ k ];
for( int i = 0; i < k; i++ ) Niz_j[ i ] = i;
//...
}
void bfunc(int &k, double *Niz_j)
{
//...
cfunc(k, Niz_j);
//...
}
void main()
{
//...
double **Niz;
int Dim1 = 10, k;
Niz = new double*[ Dim1 ];
for( int j = 0; j < Dim1; j++ )
{
bfunc(k, Niz[ j ]);
//...
}
}
//VARIJANTA 1
void cfunc(int j, int &k, double **Niz)
{
//...
k = 15;
Niz[ j ] = new double[ k ];
for( int i = 0; i < k; i++ ) Niz[ j ][ i ] = i;
//...
}
void bfunc(int j, int &k, double **Niz)
{
//...
cfunc(j, k, Niz);
//...
}
void main()
{
//...
double **Niz;
int Dim1 = 10, k;
Niz = new double*[ Dim1 ];
for( int j = 0; j < Dim1; j++ )
{
bfunc(j, k, Niz);
//...
}
}
//VARIJANTA 2
void cfunc(int &k, double *Niz_j)
{
//...
k = 15;
Niz_j = new double[ k ];
for( int i = 0; i < k; i++ ) Niz_j[ i ] = i;
//...
}
void bfunc(int &k, double *Niz_j)
{
//...
cfunc(k, Niz_j);
//...
}
void main()
{
//...
double **Niz;
int Dim1 = 10, k;
Niz = new double*[ Dim1 ];
for( int j = 0; j < Dim1; j++ )
{
bfunc(k, Niz[ j ]);
//...
}
}
Ima li neko ideju gde grešim kod varijante 2?