使用 C++、SDL、OpenGL 和 GLEW 时出现无法解释的内存错误
Unexplained memory error using C++, SDL, OpenGL and GLEW
这是我的整个应用程序(精简到要点):
#include <stdio.h>
#include <GL/glew.h>
#include <SDL.h>
#include <SDL_opengl.h>
#include <gl/glu.h>
int main( int argc, char* args[] )
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* gWindow = SDL_CreateWindow( "title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN );
SDL_GLContext gContext = SDL_GL_CreateContext( gWindow );
glewInit();
GLfloat *floatArray = new GLfloat(108);
floatArray[107] = 0.0f;
GLuint glBuffer;
glGenBuffers(1, &glBuffer);
return 0;
}
这个和需要的库都是Visual Studio2012年编译的。
此代码以正确的顺序初始化 OpenGL 上下文所需的所有系统,据我所知没有遗漏任何内容(仅在它中断后才需要清理,所以我将其删除)。
它在行 glGenBuffers(1, &glBuffer);
处中断,错误为 "SOFT323_vs11_2012.exe has triggered a breakpoint."
设置超出 floatArray[9]
的元素需要将其打断。
我该如何解决这个问题?是其中一个库出现故障还是我使用不当?
这会分配一个 GLfloat
,初始化为值 108.0f
。
GLfloat *floatArray = new GLfloat(108);
您想分配一个数组:
GLfloat *floatArray = new GLfloat[108];
这是我的整个应用程序(精简到要点):
#include <stdio.h>
#include <GL/glew.h>
#include <SDL.h>
#include <SDL_opengl.h>
#include <gl/glu.h>
int main( int argc, char* args[] )
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* gWindow = SDL_CreateWindow( "title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN );
SDL_GLContext gContext = SDL_GL_CreateContext( gWindow );
glewInit();
GLfloat *floatArray = new GLfloat(108);
floatArray[107] = 0.0f;
GLuint glBuffer;
glGenBuffers(1, &glBuffer);
return 0;
}
这个和需要的库都是Visual Studio2012年编译的。
此代码以正确的顺序初始化 OpenGL 上下文所需的所有系统,据我所知没有遗漏任何内容(仅在它中断后才需要清理,所以我将其删除)。
它在行 glGenBuffers(1, &glBuffer);
处中断,错误为 "SOFT323_vs11_2012.exe has triggered a breakpoint."
设置超出 floatArray[9]
的元素需要将其打断。
我该如何解决这个问题?是其中一个库出现故障还是我使用不当?
这会分配一个 GLfloat
,初始化为值 108.0f
。
GLfloat *floatArray = new GLfloat(108);
您想分配一个数组:
GLfloat *floatArray = new GLfloat[108];