A voir également:
- Language c
- Vistalizator language pack windows 7 - Télécharger - Traduction
- Windows display language french - Guide
- Autocad 2008 language pack french - Forum AutoCAD
- The language dll vb6fr.dll could not be found - Forum Windows
- Desmume change language - Forum Jeux vidéo
1 réponse
Bonsoir
Donc pour l'explication (Je complète par quelques lignes...)
Dans cette ligne est déclaré un pointer de type "char" (ou, pour faire plus court: "char *")
Le but final est de pouvoir lire/écrire plusieurs variables de type "char"
On peu facilement déduite ici que ce sera une chaine de texte...
Par contre, en l'état, cette variables est inutilisable car elle n'est pas allouer (rappel, un pointer indique une adresse en mémoire...)
Hors ici, elle est NULL
Il faut donc l'initialiser/l'allouer afin de pouvoir c'en servir...
C'est le but de votre ligne...
Cette ligne vas préparer la variable (lui assigner un espace mémoire.) à l'aide de la fonction malloc (Memory ALLOCate)
Pour les détailles c'est asse simple...
comb = (char *)malloc((lg)*sizeof(char)+1);
... = (char *)
La fonction malloc renvoie une valeur de type "void *", hors, nous souhaitons l'assigner a un "char *", il faut donc CASTER (transformer un type en un autre, pour faire court) la valeur retourner
C'EST LE BUT DE CETTE LIGNE...
malloc((lg)*sizeof(char)+1)
Ici, nous indiquons a la fonction malloc de combien de mémoire nous avons besoin!
Soit "lg" (un nombre j'imagine) fois la taille de UNE variable de type "char" (sizeof(char)), logique, on veux allouer un "char *"
A cette taille est rajouter 1 ( + 1) qui (je pense) sera mis à zéro.
Appelons ça une marge de sécurité... Asse commune quand on alloue de la mémoire pour une chaine de texte (en effet de nombreuse fonction demande des chaine de texte terminer par un '0' (null terminated)
Par contre, la logique voudrais que l'on place le "+ 1" juste après le "lg"
Plus prudent. Car il faut UN caractère de plus pour le "0" de fin de chaine, non pas de fin de mémoire (Ici, vue que sizeof(char) vaut 1, ca ne change rien mais c'est une bonne habitude à prendre...)
Voila, j'espère avoir été asse clair et vous avoir aider un peu
Bien à vous
Donc pour l'explication (Je complète par quelques lignes...)
Dans cette ligne est déclaré un pointer de type "char" (ou, pour faire plus court: "char *")
char *comb = NULL;
Le but final est de pouvoir lire/écrire plusieurs variables de type "char"
On peu facilement déduite ici que ce sera une chaine de texte...
Par contre, en l'état, cette variables est inutilisable car elle n'est pas allouer (rappel, un pointer indique une adresse en mémoire...)
Hors ici, elle est NULL
Il faut donc l'initialiser/l'allouer afin de pouvoir c'en servir...
C'est le but de votre ligne...
comb = (char *)malloc((lg)*sizeof(char)+1);
Cette ligne vas préparer la variable (lui assigner un espace mémoire.) à l'aide de la fonction malloc (Memory ALLOCate)
Pour les détailles c'est asse simple...
comb = (char *)malloc((lg)*sizeof(char)+1);
... = (char *)
La fonction malloc renvoie une valeur de type "void *", hors, nous souhaitons l'assigner a un "char *", il faut donc CASTER (transformer un type en un autre, pour faire court) la valeur retourner
C'EST LE BUT DE CETTE LIGNE...
malloc((lg)*sizeof(char)+1)
Ici, nous indiquons a la fonction malloc de combien de mémoire nous avons besoin!
Soit "lg" (un nombre j'imagine) fois la taille de UNE variable de type "char" (sizeof(char)), logique, on veux allouer un "char *"
A cette taille est rajouter 1 ( + 1) qui (je pense) sera mis à zéro.
Appelons ça une marge de sécurité... Asse commune quand on alloue de la mémoire pour une chaine de texte (en effet de nombreuse fonction demande des chaine de texte terminer par un '0' (null terminated)
Par contre, la logique voudrais que l'on place le "+ 1" juste après le "lg"
comb = (char *)malloc((lg + 1) * sizeof(char));
Plus prudent. Car il faut UN caractère de plus pour le "0" de fin de chaine, non pas de fin de mémoire (Ici, vue que sizeof(char) vaut 1, ca ne change rien mais c'est une bonne habitude à prendre...)
Voila, j'espère avoir été asse clair et vous avoir aider un peu
Bien à vous
brain2
Messages postés
13
Statut
Membre
3
merci SchSoftware votre explication m'a été très utile