类 的数组占用大量内存

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"。