A multidimensional array is contiguous. An array of pointers (pointers ...) is another thing (and each sub-pointer should be selected / copied / freed by itself).
Do not confuse the fact that in most situations a one-time array and one pointer can be used interchangeably, since they are not technically the same.