在堆栈上创建的数组的内容是什么,但没有放入值?像这样:
int array[4]
cout << array[2];
我问这个是因为我在OpenGL中总是看到生成纹理时,它是这样做的:
GLuint textures[4];
glGenTextures(4, &textures[0]);
glBindTexture(GL_TEXTURE_2D, textures[2]);
这是什么处理?
感谢。
答案 0 :(得分:8)
内容可以是任何内容。通常它是由前一个功能留下的东西,但没有保证。
glGenTextures
填充第二个参数,该参数由指针传递。没有使用未初始化的值。就像textures[0] = 0;
一样,它会覆盖存在的垃圾。
答案 1 :(得分:3)
在这种情况下,glGenTextures的第二个参数是返回,而不是输入。基本上,它用4个纹理ID填充纹理[4]数组,可以在以后使用。
单位化内存几乎是来自先前进程/分配的随机垃圾。在分配值之前,从未初始化的变量中读取应始终被视为错误。
答案 2 :(得分:0)
值未初始化,但阵列可以安全使用。 glGenTextures使用作为纹理槽句柄的int来填充元素。