我正在开发一个使用2D结构数组存储地图图块属性的简单游戏。
该结构的定义如下:
typedef struct
{
//PRE-GENERATED PROPERTIES
//Tile Type
int TypeB;
int TypeF;
int TypeW;
//Tile Roughness
int RougB;
int RougF;
int RougW;
//GENERATED PROPERTES
//Boundary Type
int BounB;
int BounF;
int BounW;
//Boundary Rotation
int BounRotB;
int BounRotF;
int BounRotW;
//Boundary Flip
int BounFlpB;
int BounFlpF;
int BounFlpW;
//Movement Properties
int Movement;
int Movement_Speed;
//RANDOMIZED PROPERTIES
//Randomized Texture Fill
int RandB;
int RandF;
int RandW;
//Randomized Texture Rotation
int RandRotB;
int RandRotF;
int RandRotW;
//Randomized Texture Flip
int RandFlpB;
int RandFlpF;
int RandFlpW;
//Perlin (Temp)
double PerlinSum;
} MapData;
MapData **MapTile;
然后使用以下函数创建并运行该数组:
//Create Map Matrix
void CreateMapMatrix(MapData ***Map, int xSize, int ySize)
{
//Variables
int i;
//Allocate Map Memory
*Map = calloc(xSize, sizeof(MapData));
for(i = 0; i < xSize; i++)
{
(*Map)[i] = calloc(ySize, sizeof(MapData));
}
}
int = xMap = 2000, yMap = 2000;
CreateMapMatrix(&MapTile,xMap,yMap);
我的问题是,与我期望的相比,此功能运行期间和运行之后使用的内存过高(我假设它是与数组关联的内存)。
假设每个结构占用68个字节(我知道这会更多),我期望对应数组大小的以下内存值。我将观察到的实际内存分配放在一边:
通过在上述功能之前和之后检查程序的内存使用情况,可以发现观察到的内存分配。
因此,我想我的问题是这种内存差异是否在意料之中,还是我是否已经搞砸了。
与往常一样,任何帮助都将不胜感激!
*Map = calloc(xSize, sizeof(MapData));
应该:
*Map = calloc(xSize, sizeof(MapData *));
您分配了过多的内存。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句