Question

J'ai une préoccupation sur les tableaux de longueur variable. Quand je veux allouer un tableau dynamique, je vais nulle, s'il est impossible d'allouer suffisamment de mémoire et je peux répondre à cela correctement dans mon programme. Avec un tableau de longueur variable, je ne comprends pas ces informations. Que dois-je faire avec ça?

Était-ce utile?

La solution

Vous avez raison de VLA sont fondamentalement toujours dangereux. La seule exception est si vous assurer que vous ne les faites plus d'une taille que vous vous sentez en sécurité et faire un tableau de taille fixe, et dans ce cas, vous pourriez tout aussi bien utiliser un tableau de taille fixe. Il y a une classe obscure d'algorithmes récursifs où VLA pourrait faire la différence entre être incapable de résoudre le problème (débordement de pile) et pouvoir, mais pour la plupart, je recommanderais sans jamais utiliser

de VLA.

Cela ne signifie pas les types VLA sont inutiles, bien que. Alors que VLA est mauvais / dangereux, pointeur à VLA types sont extrêmement utiles. Ils permettent d'avoir allouée dynamiquement (via malloc) tableaux multidimensionnels sans faire le calcul de la dimension manuellement, comme dans:

size_t n;
double (*matrix)[n] = malloc(n * sizeof *matrix);

pour obtenir un n-par-n matrice adressable matrix[i][j].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top