一个动态创建三维数组的内存有关问题

请教大家一个动态创建三维数组的内存问题
BYTE   ***PixelBlockArray=new   BYTE**[BlockPixelNumHeigth];

for(x=0;x <BlockPixelNumHeigth;x++)

{

        PixelBlockArray[x]=new   BYTE*[BlockPixelNumWidth];

        for(y=0;y <BlockPixelNumWidth;y++)

        {
PixelBlockArray[x][y]=new   BYTE[mFileHead-> BitCount/8];

        }

}

请问我的程序为什么执行完这段创建动态三维数组的代码后,内存占用量增加14兆智多?
而且在1和2循环之间,内存以32K的速度增长,按理只以05K的速度增加阿。   求助大家了,谢谢!!
注:BlockPixelNumHeigth=512
        BlockPixelNumWidth=512
        mFileHead-> BitCount/8=1

------解决方案--------------------
PixelBlockArray[512] = new BYTE*[512]
一个BYTE* 占4字节,
512 * 512 * 4 = 1,048,576

new BYTE[1];这里虽然需要系统分配一个字节,但是x86的 cpu缓存行的长度为32字节,所以操作系统为了字节对齐,会分配32字节的空间。
so.
512 * 512 * 32 = 8,388,608

差不多10m了

然后,debug方式编译,会占去一些内存用于 debug.