salut.
je veux savoir quand il faut utiliser malloc ,par exemple si je prend cet exemple :
et est ce que il y'aura une allocation mémoire si je faisCode:
1
2
3
4
5 char * ch; ch= (char*)malloc(2*sizeof(char));
Code:
1
2
3 char * ch = "bonjour";
Version imprimable
salut.
je veux savoir quand il faut utiliser malloc ,par exemple si je prend cet exemple :
et est ce que il y'aura une allocation mémoire si je faisCode:
1
2
3
4
5 char * ch; ch= (char*)malloc(2*sizeof(char));
Code:
1
2
3 char * ch = "bonjour";
Il n'y a pas d'allocation dynamique de mémoire (implicite ou non) dans ce cas.
Un tableau contenant cette chaine existe bien quelque part, mais dans une zone mémoire différente de celle attribuée aux données créées par allocation dynamique.
Cette zone peut être non modifiable (pas d'accès autorisé en écriture), aussi il convient de se prémunir contre des erreurs en le spécifiant :
Code:char const * ch = "bonjour";
salut.
et quand on doit utiliser MALLOC ?
Plusieurs cas principaux:
- La quantité de mémoire voulue est trop grande pour tenir dans la pile (par exemple, plusieurs Mo)
- La quantité de mémoire voulue n'est pas connue à la compilation.
- La zone mémoire doit être encore valide une fois la fonction terminée.
- Une combinaison des cas au-dessus
Pour le cas n°2, un petit exemple simple est le cas où le programme demande à l'utilisateur quelle taille le tableau doit avoir.
Pour le cas n°3, un exemple commun est le coup de la fonction qui doit retourner une chaîne de caractères: Soit elle doit recevoir en paramètre un pointeur vers un buffer, soit elle doit allouer dynamiquement son buffer et retourner un pointeur vers celui-ci.
salut
je me rappelle entendu parler du code assembleur généré par GCC (ou quelque chose comme ca ),est donc comment peut on visualiser le code assembleur d'un code en C?
(distribution linux Ubuntu)
Code:gcc -S fichier.c