C++ malloc()和glDrawPixels()的访问冲突?

C++ malloc()和glDrawPixels()的访问冲突?,c++,opengl,malloc,filestream,C++,Opengl,Malloc,Filestream,有人能看到这个代码有什么问题吗 大小_BG是6MB,因为我正在尝试绘制一个大位图图像(3366x600)。我使用malloc防止图像溢出堆栈。我在调用glDrawPixels()时遇到访问冲突错误。bgPtr似乎指向了正确的数据,因为我在调用glDrawPixels之前检查了前几个字节,它们是正确的 bgPtr = (char*)malloc(SIZE_BG); fstream inFile(texFileName, ios::in | ios::binary); inF

有人能看到这个代码有什么问题吗

大小_BG是6MB,因为我正在尝试绘制一个大位图图像(3366x600)。我使用malloc防止图像溢出堆栈。我在调用glDrawPixels()时遇到访问冲突错误。bgPtr似乎指向了正确的数据,因为我在调用glDrawPixels之前检查了前几个字节,它们是正确的

    bgPtr = (char*)malloc(SIZE_BG);
    fstream inFile(texFileName, ios::in | ios::binary);
    inFile.read(bgPtr, SIZE_BG);
    inFile.close();

//... other code

    glDrawPixels(3366, 600, GL_BGRA_EXT, GL_UNSIGNED_BYTE, bgPtr+54);
大小为6MB

3366×600约为192万像素
BRGA表示每像素4字节
因此,3366×600×4刚好超过7.7MB


因此,您的缓冲区太小
glDrawPixels()
将从末尾读取未分配的内存。

@sharptooth:看来修订注释被破坏了,但我想我现在明白了你的编辑方向了。。。