C++ malloc()和glDrawPixels()的访问冲突?
有人能看到这个代码有什么问题吗 大小_BG是6MB,因为我正在尝试绘制一个大位图图像(3366x600)。我使用malloc防止图像溢出堆栈。我在调用glDrawPixels()时遇到访问冲突错误。bgPtr似乎指向了正确的数据,因为我在调用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
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:看来修订注释被破坏了,但我想我现在明白了你的编辑方向了。。。