#ERREUR# potentiellement pointeur non initialisé la variable 'ptrNames' utilisé
J'obtiens l'erreur "potentiellement pointeur non initialisé la variable 'ptrNames " utilisé" si j'exécute ce code:
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;
}
}
- Montrer au moins un peu d'effort. Quelle partie du message d'erreur ne comprenez-vous pas?
- Double Possible de stackoverflow.com/questions/10284782/...
Vous devez vous connecter pour publier un commentaire.
L'erreur est correcte.
ptrNames
n'est initialisé si le testif (*ptr < minZ)
réussit.Le plus simple correctif peut être à l'initialisation d'
ptrNames
àNULL
puis vérifier sa valeur après la premièrefor
boucle, le retour (car il n'existe pas de coups de processus) si elle n'a pas été mis à jour.ptrNames
va encore être initialisée lors de la cession. C'est en dehors de la boucle for, qui pourrait ne pas être facilement visibles à cause de la mauvaise mise en forme.Vous devez initialiser votre
ptrNames
variable à quelque chose. Leif (*ptr < minZ)
peut empêcherptrNames
être quelque chose à cet effet, vous aurez un pointeur qui pointe quelque part, vous ne savez pas et potentiellement tout casser.