Allocation correcte en C - C - Programmation
Marsh Posté le 04-11-2005 à 11:23:25
Les VLA (Variable-Length Array) existent depuis la norme C99, maintenant je ne connais pas encore de compilateur qui le gère de manière fiable.
Je crois que gcc l'implémente partiellement.
Donc vaut mieux faire un malloc(), en effet.
Et puis au passage, scanf() utilisé comme ça est une belle source de plantages.
Marsh Posté le 04-11-2005 à 11:35:53
bien répondu. Demande lui ce qu'il se passe si la valeur de n n'est pas initialisé (échec de scanf) ou bien a une mauvaise valeur (négative, 0, ou énorme) ... ben il se passe pour ainsi dire rien : tu n'a aucun moyen de savoir si l'allocation de ton tableau a réussie ou échouée. Plantage en vue ...
Les VLA c'est surtout pas fait pour ce genre d'usage. C'est une petite douceur quand on a la certitude que n est borné dans des valeurs acceptables et que ça va pas péter la pile. Mais surtout pas pour une entrée utilisateur.
Marsh Posté le 04-11-2005 à 11:41:41
Taz a écrit : Demande lui ce qu'il se passe si la valeur de n n'est pas initialisé (échec de scanf) ou bien a une mauvaise valeur (négative, 0, ou énorme) ... ben il se passe pour ainsi dire rien : tu n'a aucun moyen de savoir si l'allocation de ton tableau a réussie ou échouée. Plantage en vue ... |
De fait, je n'avais même pas envisagé cet aspect. La norme dit quoi si n n'est pas défini, c'est géré ou le comportement est indéfini ?
Faut que j'aille jeter un oeil.
Marsh Posté le 04-11-2005 à 12:13:20
Bon, j'ai fouiné dans tout ce que j'ai pu trouver concernant les VLA.
Ca donne deux points :
Voilà voilà...
Marsh Posté le 05-11-2005 à 16:35:45
Putain la prof...
Marsh Posté le 07-11-2005 à 13:23:12
Elmoricq a écrit : Bon, j'ai fouiné dans tout ce que j'ai pu trouver concernant les VLA.
|
Hum... j'ai connu une école à Rennes où la prof (prof d'algo) avait TOUJOURS raison. Et si l'élève lui prouvait qu'elle avait tord (ce qui était relativement fréquent), ben l'élève n'avait plus jamais de note dépassant 6.
J'espère pour guguy que ce n'est pas la même prof...
Marsh Posté le 07-11-2005 à 13:31:26
Une catégorie de gens que je méprise tout particulièrement.
Marsh Posté le 04-11-2005 à 11:17:30
Salut,
Dans mon cours d'algo/c la prof fait des allocations pour les tableaux qui me semble
tout a fait incorrecte et même franchement crado, de type :
int n, T[n];
printf("Taille du tableau?" );
scanf("%d", &n);
Moi j'ai répliqué qu'il fallait faire un jolie malloc mais selon elle son truc est bon...
Alors, est-ce qu'on a le droit de faire ca?