Wrecker, that is not correct. In your code, p is a pointer to an integer pointer. Dereferencing it will provide a value that is expected to be a pointer to an integer, not an integer. One can allocate the entire array in one swoop, as you show, but one can not then access it in 2D fashion, except by performing arithmetic manipulations involving multiplications by m.