#错误# 可能未初始化的局部指针变量'ptrNames'使用
#ERROR# potentially uninitialized local pointer variable 'ptrNames' used
如果我运行以下代码,我会收到错误"可能未初始化的本地指针变量'ptrNames'使用":
void processHits (GLint hits, GLuint buffer[]) //Some prints
{
unsigned int i, j;
GLuint names, *ptr, minZ,*ptrNames, numberOfNames;
if (hits == 0)
noSelected = true;
else
noSelected = false;
ptr = (GLuint *) buffer;
minZ = 0xffffffff;
for (i = 0; i < hits; i++) {
names = *ptr;
ptr++;
if (*ptr < minZ) {
numberOfNames = names;
minZ = *ptr;
ptrNames = ptr+2;
}
ptr += names+2;
}
ptr = ptrNames; //Error at this line!
for (j = 0; j < numberOfNames; j++,ptr++) {
if (hits > 0)
LastSelected = *ptr;
}
}
错误是正确的。 仅当测试成功时,才会初始化ptrNames
if (*ptr < minZ)
。
最简单的解决方法可能是将ptrNames
初始化为 NULL
然后在第一个for
循环后检查其值,如果尚未更新,则返回(因为没有要处理的命中)。
void processHits (GLint hits, GLuint buffer[]) //Some prints
{
unsigned int i, j;
GLuint names, *ptr, minZ,*ptrNames=NULL, numberOfNames;
...
if (ptrNames == NULL)
return;
ptr = ptrNames;
...
}
您需要将
ptrNames
变量初始化为某些内容。if (*ptr < minZ)
可能会阻止ptrNames
设置为某些内容,因此您将有一个指针指向您不知道的地方,并可能破坏所有内容。
相关文章:
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 使用变量模板的递归计算 - gcc 与 clang
- 尝试通过共享指针使用变量时读取访问冲突
- 在自己的初始值设定项中使用变量
- 如何使用变量模板比较 C++ 17 中的变量类型?
- 如何为文件路径使用变量?
- 如何在重命名函数 (c++) 中使用变量?
- C++ 如何在外部类中声明的内部类中使用变量
- C++ - 使用变量指针调用函数
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 在 if 中使用变量,这些变量在 if 语句中使用
- C++ 使用变量而不是常量表达式初始化数组
- 在系统( " " 中使用C++变量;
- 在字符串中使用变量
- 在 c++ 中使用递归时不使用变量反转字符串
- 在C 中,如何使用变量设置Char Grid2d [x] [y]
- 如何使用变量参数化类型?C++
- C Windows.h如何在Shellexecute中使用变量
- 有什么方法可以在 GNU Make 中使用变量作为规则和先决条件?