使用malloc()和glDrawPixels()访问冲突?

时间:2009-04-09 05:12:16

标签: c++ opengl malloc filestream

有人能看出这段代码有什么问题吗?

SIZE_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);

1 个答案:

答案 0 :(得分:3)

  

SIZE_BG是6MB

3366×600约为192万像素
BRGA表示每像素4个字节 所以,3366×600×4刚刚超过7.7MB

因此,您的缓冲区太小了...... glDrawPixels()将读取结束到未分配的内存。