opengl导致奇怪的内存访问错误(最小的例子)

时间:2017-07-06 18:54:30

标签: c++ opengl memory

我在c ++中遇到了一个奇怪的内存访问错误和opengl。 这是一个最小的例子:

#include <GL/freeglut.h>
#include <iostream>

void draw(){
  glClear(GL_COLOR_BUFFER_BIT);
  glFlush();
}

int main()
{
  std::string test = "memory access error";

  //init glut, display and so on
  int my_argc = 0;
  glutInit(&my_argc, NULL);
  glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
  glutInitWindowSize(1280, 1024);
  glutCreateWindow("test");

  glClearColor(0.0f, 0.0f, 1.0f, 1.0f); 

  glutDisplayFunc(draw);
  glutMainLoop();
  return 1; 
}

它应该只是绘制一个蓝色背景,但是在编译之后我得到了一个内存访问错误:

g++ opengl_test.cpp -o opengl_test -lGL -lglut

但如果std::string test = "memory access error"被注释掉,一切都按预期工作....

此外,如果我不针对-lGL构建,一切都很好......

系统:
Ubuntu 14.04 - 3.13.0-123-generic
OpenGL 4.5.0
NVIDIA-Treiber 375.66

GDB输出:使用-g3-ggdb

进行编译
(gdb) b main
Haltepunkt 1 at 0x400d1b: file opengl_test.cpp, line 11.
(gdb) b draw
Haltepunkt 2 at 0x400d01: file opengl_test.cpp, line 5.
(gdb) run
Starting program: /my_opengl/opengl_test

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()

有什么想法?!任何人都可以重现错误吗?
我在另一台计算机上测试了它并且还存在内存访问错误......

0 个答案:

没有答案