すいません。おしえてください。

char** pchar = new char*[3];
for (int i=0;i<3;i++) pchar[i]= new char[3];
とかで、ヒープに3×3の配列つくると、

pchar[0][0]〜pchar[0][2]は、連続するアドレスに領域確保されますが、
pchar[0][2]と、pchar[1][0]の間は、かなり空きが生じます。

このような空きは、やっぱり、ヒープ領域で非効率な無駄になっているのでしょうか。
別に9個の連続する配列つくっといて、そのアドレスを1次元配列のポインタに代入して
3×3の配列つくったほうが、効率的なんでしょうか。

普通はあんまり気にしなくていいものなんでしょうか?