【发布时间】:2011-07-30 16:33:56
【问题描述】:
我想从 OpenGL 中渲染的 GLUT 窗口中截取图像。在显示回调的一侧,我插入了以下代码:
display() {
drawTriangle(); //Renders the image
if(shouldDisplay) {
shouldDisplay=0;
bytes = width*height*3; //Color space is RGB
buffer = (GLubyte *)malloc(bytes); //buffer is global var for now
glFinish();
glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer);
}
glutSwapBuffers();
}
此代码运行后,malloc 开始失败。它因 ENOMEM 失败,错误 12。我对操作系统或 GLUT 了解不足,无法理解为什么会发生这种情况。我只是想在一台 3 GB 的机器上分配 17K。我正在使用 Windows XP 和 Visual Studio C++ 2010 Express。感谢您提供任何帮助或建议。
【问题讨论】:
-
宽、高、字节的类型分别是什么,代码运行了多少次,你是不是在某处释放内存?
-
好一个.. 看不到 free() :)