C++ 引发访问冲突异常:写入访问冲突。window.vertexBuffer为0x1110112

C++ 引发访问冲突异常:写入访问冲突。window.vertexBuffer为0x1110112,c++,C++,我被侵犯了访问权限 我尝试将vertexBuffer指向初始化的int数组,但得到了相同的结果 我已经做了一些调试,以了解其中的进展,但似乎我的变量没有正确初始化 #包括 类游戏 { 私人: int bufferSizeX,bufferSizeY; 字符*缓冲区; bool good=false; int vertexLeng=0; int*顶点缓冲区; 公众: 静态初始化(整数宽度、整数高度); 静态void clearBuffer(CmdGame窗口); 静态void vetex2I(int

我被侵犯了访问权限

我尝试将vertexBuffer指向初始化的int数组,但得到了相同的结果

我已经做了一些调试,以了解其中的进展,但似乎我的变量没有正确初始化

#包括
类游戏
{
私人:
int bufferSizeX,bufferSizeY;
字符*缓冲区;
bool good=false;
int vertexLeng=0;
int*顶点缓冲区;
公众:
静态初始化(整数宽度、整数高度);
静态void clearBuffer(CmdGame窗口);
静态void vetex2I(int x、int y、CmdGame窗口);
静态虚空数组(int类型,CmdGame窗口);
静态无效shangeBuffer(CMDAME窗口);
};
CmdGame CmdGame::初始化(整数宽度、整数高度)
{
游戏缓冲区;
Buffer.bufferSizeX=宽度;
Buffer.bufferSizeY=高度;
CmdGame::clearBuffer(缓冲区);
Buffer.good=true;
返回缓冲区;
}
void CmdGame::shangeBuffer(CmdGame窗口)
{
printf(窗口缓冲区);
}
void CmdGame::vetex2I(int x,int y,CmdGame窗口)
{
window.vertexBuffer[window.vertexLeng]=y;
window.vertexBuffer[window.vertexLeng+1]=x;
window.vertexLeng++;
}
void CmdGame::clearBuffer(CmdGame窗口)
{
系统(“CLS”);
删除window.buffer;
window.buffer=新字符[window.bufferSizeX*window.bufferSizeY];
删除window.vertexBuffer;
window.vertexBuffer=newint[99*2];
}
void CmdGame::drawArray(int类型,CmdGame窗口)
{
如果(类型==1)
{
对于(int i=0;i<99;i+=3)
{
}
}
如果(类型==0)
{
对于(int i=0;i<99;i+=2)
{
window.buffer[window.vertexBuffer[i]*window.vertexBuffer[i+1]]='#';
}
}
}
int main()
{
CmdGame window=CmdGame::初始化(64,32);
while(true)
{
CmdGame::clearBuffer(窗口);
CmdGame::vetex2I(32、16、窗口);
CmdGame::DrawArray(0,窗口);
CmdGame::shangeBuffer(窗口);
}
}
希望设置
vertexBuffer[i]
的值,但它给出了以下内容:

引发异常:写入访问冲突。 window.vertexBuffer为0x1110112


您忘记了在
initialize()
函数中初始化两个缓冲区!没关系,只要您在“clearBuffer”中使用
.good
标志:

void CmdGame::clearBuffer(CmdGame window)
{
    if (window.good) { // Has buffers already …
        delete[] window.buffer; // You need delete[] 'cos you used new []!
        delete[] window.vertexBuffer;
    }
    system("CLS");
    window.buffer = new char[window.bufferSizeX * window.bufferSizeY];
    window.vertexBuffer = new int[99 * 2];
}
然后再试一次