Le language C
Norme ANSI
2ième Edition
Oui le K&R p185:
"Au lieu d'allouer une taille fixe à la compilation, malloc demandera de l'espace mémoire au système d’exploitation quand il en aura besoin.Puisque d'autres activités du programme pourront également demander de l'espace sans appeler cet allocateur, l'espace géré par malloc ne sera pas forcement contigu. On conservera donc son espace libre sous la forme d'une liste de bloc libre." Ma question: avez-vous un cas pratique ou l'on peut voir ce caractère non contigu ?
Edit: donc si par exemple je fais
Code :
- char ** popo=malloc((4+1)*sizeof(char*));
- int i;
- for(i=0;i<4;i++)
- popo[i]=malloc((5+1)*sizeof(char*));
|
Rien ne dis à priori que les popo[i] (les adresses) seront contigu en mémoire ?
J'en profite pour poser une autre petite question;
Pour ce code :
Code :
- char ** popo=malloc((4+1)*sizeof(char*));
|
malloc retourne un (void*) qui sera caster automatiquement dans le type de popo?Du coup un (void*) est caster en char**? ou en char *?
et là:
Code :
- popo[i]=malloc((5+1)*sizeof(char*));
|
le (void*) retourner par malloc est convertit en char *?
J'ai sûrement rien compri..... du coup
Message édité par pourquoi_pas_hein le 09-10-2017 à 23:45:56