类 的数组占用大量内存
an array of classes draws to much memory
我正在处理在屏幕上显示图像网格的项目。然后我意识到我需要能够单独访问每个图块,因此创建了以下 class 来表示每个图块的单独信息。
class cTile
{
//a class representing position in the graphics api im using (irrlicht)
position2d<s32> Position;
int imgIndex_x;
int imgIndex_y;
int offset;
// a class representing a square in the graphics api im using (irrlicht)
rect<s32> TextureSq;
// initialized at a negative number because zero is a valid number represent the global id number of tile ie its texture
int Gid = -1;
public:
cTile();
~cTile();
bool isSolid;
void animate();
void setGid(int gid);
int getGid();
void setSolid(bool state);
void draw(IVideoDriver* vdr, ITexture * sourceImage);
};
当我尝试删除这个 class 的数组时,例如 cTile tiles[5]
我得到:
Error 1 error C2148: total size of array must not exceed 0x7fffffff bytes
编译器和操作系统通常将局部变量内存的大小设置为 space 小于动态内存的 space。
一个简单的解决方案是使用 std::vector
。
另一个解决方案是使用 operator new
分配数组 "on the heap"。
我正在处理在屏幕上显示图像网格的项目。然后我意识到我需要能够单独访问每个图块,因此创建了以下 class 来表示每个图块的单独信息。
class cTile
{
//a class representing position in the graphics api im using (irrlicht)
position2d<s32> Position;
int imgIndex_x;
int imgIndex_y;
int offset;
// a class representing a square in the graphics api im using (irrlicht)
rect<s32> TextureSq;
// initialized at a negative number because zero is a valid number represent the global id number of tile ie its texture
int Gid = -1;
public:
cTile();
~cTile();
bool isSolid;
void animate();
void setGid(int gid);
int getGid();
void setSolid(bool state);
void draw(IVideoDriver* vdr, ITexture * sourceImage);
};
当我尝试删除这个 class 的数组时,例如 cTile tiles[5]
我得到:
Error 1 error C2148: total size of array must not exceed 0x7fffffff bytes
编译器和操作系统通常将局部变量内存的大小设置为 space 小于动态内存的 space。
一个简单的解决方案是使用 std::vector
。
另一个解决方案是使用 operator new
分配数组 "on the heap"。