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重新编辑 ]