gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:12:37 26 4
gpt4 key购买 nike

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

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

最佳答案

SIZE_BG is 6MB

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

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

关于c++ - malloc() 和 glDrawPixels() 的访问冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/732894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com