I think you are making a 3D array. Do the following:
template< class T>
void create3DArray( const unsigned nx, const unsigned ny, const unsigned nz, T *** & array )
{
if ( array != NULL )
{
return;
}
unsigned i( 0 ), j( 0 );
array = new T **[ nx ];
for ( i = 0; i < nx; ++i )
{
array[ i ] = new T*[ ny ];
}
for ( i = 0; i < nx; ++i )
{
for ( j = 0; j < ny; ++j )
{
array[ i ][ j ] = new T[ nz ];
}
}
}
template< class T>
void delete3DArray( const unsigned nx, const unsigned ny, T *** & array )
{
if ( array == NULL )
{
return;
}
unsigned i( 0 ), j( 0 );
for ( i = 0; i < nx; ++i )
{
for ( j = 0; j < ny; ++j )
{
delete[] array[ i ][ j ];
}
}
for ( i = 0; i < nx; ++i )
{
delete[] array[ i ];
}
delete[] array; array = NULL;
}
Note that do not forget [] for delete. Otherwise, there is memory leak. You need to know why.
[ 此帖被steinlee在2010-04-07 23:13重新编辑 ]