This function frees memory that has previouly been dynamically
allocated using one of the AST memory function. It assumes that
the supplied pointer is a pointer to an array of pointers. Each
of these pointers is first freed, and then the supplied pointer
is freed.
Note, this routine should not be used with arrays allocated
by astGrowastGrow since astGrow over-allocates and so there may be
non-initialised pointers at the end of the array.