-1
votes

La valeur est utilisée sans être initialisée

dans mon code j'utilise malloc pour créer n string pour mon projet et après cela, j'ai créé «TR» pour mettre toutes les ficelles de ** STR avec de petites lettres. et cela me donne une erreur:

Échec du chèque de temps d'exécution n ° 3 - La variable 'str' est utilisée sans être initialisée. xxx

c

3 commentaires

Vous faites exactement ce qu'il dit que vous faites. Allouer str avant d'utiliser str [i] . Déplacez cette allocation d'allocation avant vous l'utilisez. Aussi NE PAS CAST MALLOC .


Vous faites d'abord quelque chose comme str [i] = malloc ... et sur la ligne ci-dessous, vous faites quelque chose comme str = (char * **) MALLOC (Tailleof (Char) * N + 1 );


NULL est un null pointeur . Ce n'est pas censé être utilisé pour d'autres valeurs. Si vous souhaitez initialiser CNT et k à zéro, utilisez zéro ( 0 ).


3 Réponses :


1
votes

Vous avez ces deux sections de code dans le mauvais ordre: xxx

Vous devez attribuer la mémoire pour STR avant de pouvoir attribuer à str [ I] . Et il devrait être tailleof (char *) * n ; Il n'est pas nécessaire d'ajouter 1 à ceci (vous n'en avez besoin que dans tr , puisque vous ajoutez un terminateur null à la fin).

Il devrait être: < Pré> xxx

après

aussi, veuillez lire Est-ce que je jette le résultat de malloc? et Pourquoi est-il considéré comme une mauvaise pratique pour omettre des accolades?


0 commentaires

1
votes

Vous n'allociez pas avant d'utiliser, vous utilisez puis alloué, mais également alloué de manière incorrecte. L'allocation correcte est la suivante: xxx

où str est une matrice de char * , pas un tableau de Char .

C'est bon que vous écoutez vos avertissements de compilation, mais celui-ci était vraiment spécifique et que vous devriez pouvoir trouver le problème. La commande d'allocations est extrêmement importante et "assez proche" n'est pas acceptable. Cela fonctionne soit, soit un comportement indéfini.


0 commentaires

3
votes
for (size_t i = 0; i < n; ++i)
    free(str[i]);
free(str);

0 commentaires