使用C++,SDL,OpenGL和GLEW时出现无法解释的内存错误

mat*_*ule 1 c++ opengl glew sdl visual-studio-2012

这是我的整个应用程序(简要介绍):

#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;
}
Run Code Online (Sandbox Code Playgroud)

这和所需的库都在Visual Studio 2012中编译.

这段代码以正确的顺序初始化了OpenGL上下文所需的所有系统,并且在我看到的时候没有遗漏任何东西(只有在断点之后才需要清理,所以我把它拿出来).

它打破了行glGenBuffers(1, &glBuffer);,错误"SOFT323_vs11_2012.exe触发了断点".

需要设置一个元素floatArray[9]才能打破它.

我该如何处理这个问题?它是其中一个库的故障还是我错误地使用它们?

Dre*_*ann 5

这将分配一个GLfloat使用该值初始化的单个108.0f.

GLfloat *floatArray = new GLfloat(108);
Run Code Online (Sandbox Code Playgroud)

你想分配一个数组:

GLfloat *floatArray = new GLfloat[108];
Run Code Online (Sandbox Code Playgroud)