C ++:堆栈上的未初始化(?)数组(关于OpenGL的示例)

时间:2011-01-02 23:51:48

标签: c++ arrays opengl stack

在堆栈上创建的数组的内容是什么,但没有放入值?像这样:

int array[4]
cout << array[2];

我问这个是因为我在OpenGL中总是看到生成纹理时,它是这样做的:

GLuint textures[4];
glGenTextures(4, &textures[0]);

glBindTexture(GL_TEXTURE_2D, textures[2]);

这是什么处理?

感谢。

3 个答案:

答案 0 :(得分:8)

  1. 内容可以是任何内容。通常它是由前一个功能留下的东西,但没有保证。

  2. glGenTextures填充第二个参数,该参数由指针传递。没有使用未初始化的值。就像textures[0] = 0;一样,它会覆盖存在的垃圾。

答案 1 :(得分:3)

在这种情况下,glGenTextures的第二个参数是返回,而不是输入。基本上,它用4个纹理ID填充纹理[4]数组,可以在以后使用。

单位化内存几乎是来自先前进程/分配的随机垃圾。在分配值之前,从未初始化的变量中读取应始终被视为错误。

答案 2 :(得分:0)

值未初始化,但阵列可以安全使用。 glGenTextures使用作为纹理槽句柄的int来填充元素。