Whenever you have an array of pointer, you probably have a double-ptr. See http://stackoverflow.com/questions/5558382/double-pointers-and-arrays
In some contexts, you actually new up an array of (uninitialized) pointers, then initialize each ptr. This example is from [[Programming with Visual C++: Concepts and Projects]]
int* arr;
int** ptr;
arr = new int[8];
ptr = new int*[8];
for (i=0; i<8; ++i) ptr[i] = &arr[i];