But why? In C, to make a 2D array, you have to know the sizes of both dimensions, either statically or dynamically.

Whatever method of creation, you must know the size beforehand, right? You can just cache the size and use it later...