检测到堆栈粉碎 glGetTexImage

Posted

技术标签:

【中文标题】检测到堆栈粉碎 glGetTexImage【英文标题】:Stack smashing detected glGetTexImage 【发布时间】:2016-08-21 03:51:54 【问题描述】:

以下是运行时导致堆栈崩溃的代码:

GLubyte pixels[SCREEN_WIDTH*SCREEN_HEIGHT*3];


glBindTexture(GL_TEXTURE_2D,fbo->renderedTexture);
glGetTexImage(GL_TEXTURE_2D,0,GL_RGB,GL_UNSIGNED_BYTE,pixels);

我已确定函数本身不是问题,因为它适用于 sdl 表面。

【问题讨论】:

GL_PACK_ALIGNMENT 设置为什么? 我们没有足够的信息来为您推断问题。请发布一个最小的工作示例。 【参考方案1】:

可能的原因:

pixels 的大小超过了剩余的堆栈数量(可用的堆栈数量有限),这就是破坏你的堆栈的原因。不要将堆栈用于大的东西。

另一个可能的原因是,pixels 的大小太小,以至于纹理数据在应用了所有打包参数(对齐方式、行跨度)后都无法适应它。

【讨论】:

以上是关于检测到堆栈粉碎 glGetTexImage的主要内容,如果未能解决你的问题,请参考以下文章

使用 c++ 偶尔检测到 *** 堆栈粉碎***

调用函数后检测到 C 堆栈粉碎

在程序结束时检测到堆栈粉碎

在函数中操作int的数组时堆栈粉碎错误

在有足够空间的情况下加载到数组会导致堆栈粉碎?

Java Interposer 中的堆栈粉碎