__ ___ _ _ _ ____ / / ___ / _ \__ _ _ _ ___ __| |_ _ | || ||___ \ / / / _ \ / /_)/ _` | | | / __| / _` | | | | | || |_ __) | / /__| __/ / ___/ (_| | |_| \__ \ | (_| | |_| | |__ _/ __/ \____/\___| \/ \__,_|\__, |___/ \__,_|\__,_| |_||_____| |___/
$> ls -l
-rwrw-rw- 1 db0 db0 62.1 Ko 2015-03-30 19:37 Impatient C
-rwrw-rw- 1 db0 db0 3.5 Ko 2015-03-30 19:37 Impatient SCM
-rwrw-rw- 1 db0 db0 3.0 Ko 2015-03-30 19:37 Impatient Emacs
-rwrw-rw- 1 db0 db0 2.4 Ko 2015-03-30 19:37 Impatient Man Pages
-rwrw-rw- 1 db0 db0 10.5 Ko 2015-03-30 19:37 Impatient Perl
-rwrw-rw- 1 db0 db0 17.3 Ko 2015-03-30 19:37 Impatient Python
-rwrw-rw- 1 db0 db0 13.6 Ko 2015-03-30 19:37 Impatient Shell Debutant
-rwrw-rw- 1 db0 db0 16.4 Ko 2015-03-30 19:37 Impatient Shell Script
-rwrw-rw- 1 db0 db0 3.4 Ko 2015-03-30 19:37 Impatient Shell
-rwrw-rw- 1 db0 db0 1.8 Ko 2015-03-30 19:37 Impatient Vim
Warning
Contrairement aux autres articles, ceux de cette listes n'ont jamais été vérifiés ni relus depuis que je les ai rédigés en première année. Ils peuvent donc contenir des erreurs. Les informations qu'ils contiennent sont à prendre avec des pincettes et à vérifier.
Archives
-rwrw-rw- 1 db0 db0 0.9 Ko 2015-03-30 19:37 Financer Ses Etudes-rwrw-rw- 1 db0 db0 2.4 Ko 2015-03-30 19:37 Languages A Apprendre En Tek1
-rwrw-rw- 1 db0 db0 1.1 Ko 2015-03-30 19:37 Makefile Le Retour
-rwrw-rw- 1 db0 db0 3.0 Ko 2015-03-30 19:37 Makefile De Base
-rwrw-rw- 1 db0 db0 1.2 Ko 2015-03-30 19:37 Pourquoi_printf_met_tout_a_la_fin
-rwrw-rw- 1 db0 db0 0.7 Ko 2015-03-30 19:37 Pourquoi_utiliser_getnextline_plutot_que_read_pour_le_minishell_et_autre_42sh
-rwrw-rw- 1 db0 db0 4.3 Ko 2015-03-30 19:37 Taille De Donnees Et Structures
-rwrw-rw- 1 db0 db0 1.5 Ko 2015-03-30 19:37 Cflags
-rwrw-rw- 1 db0 db0 1.6 Ko 2015-03-30 19:37 Hidenp.c
-rwrw-rw- 1 db0 db0 0.1 Ko 2015-03-30 19:37 Liens_utiles_my_select
-rwrw-rw- 1 db0 db0 2.1 Ko 2015-03-30 19:37 List_chainees.c
-rwrw-rw- 1 db0 db0 1.0 Ko 2015-03-30 19:37 Memo_rendu
-rwrw-rw- 1 db0 db0 4.8 Ko 2015-03-30 19:37 Minishell.c
-rwrw-rw- 1 db0 db0 32.7 Ko 2015-03-30 19:37 My_printf.c
-rwrw-rw- 1 db0 db0 4.5 Ko 2015-03-30 19:37 Ordalphlong.c
-rwrw-rw- 1 db0 db0 3.7 Ko 2015-03-30 19:37 Qcm.txt
-rwrw-rw- 1 db0 db0 5.8 Ko 2015-03-30 19:37 Str_to_inttab.c
-rwrw-rw- 1 db0 db0 0.6 Ko 2015-03-30 19:37 Verifier_les_fuites_memoires
-rwrw-rw- 1 db0 db0 0.5 Ko 2015-03-30 19:37 Verifier_les_syscall
Taille de donn�es en m�moire et structures
Tout d'abord, il faut savoir que les types de donn�es ont chacun une taille :
Type
Nombre d'octets en mémoire
Nombre de bits en mémoire
Limite inférieure
Limite supérieure
char
1 octet
8 bits
- 128
127
unsigned char
1 octet
8 bits
0
255
short
2 octets
8 x 2 = 16 bits
- 32 768
32 767
unsigned short
2 octets
8 x 2 = 16 bits
0
65 535
int
4 octets
8 x 4 = 32 bits
- 2 147 483 648
2 147 483 647
unsigned int
4 octets
8 x 4 = 32 bits
0
4 294 967 295
long
4 octets
8 x 4 = 32 bits
-2 147 483 648
2 147 483 647
unsigned long
4 octets
8 x 4 = 32 bits
0
4 294 967 295
float
4 octets
8 x 4 = 32 bits
-3.4 x 10-38
3.4 x 1038
double
8 octets
8 x 8 = 64 bits
-1.7 x 10-308
1.7 x 10308
long double
12 octets
8 x 12 = 96 bits
-3.4 x 10-4932
3.4 x 104932
Cependant, la taille prise en m�moire est toujours "arrondie" � 4 octets pr�s. Par exemple, quand on d�clare un char, m�me si on a acc�s qu'� 1 octets, il en prend en r�alit� 4 en m�moire. C'est la raison pour laquelle on d�clare g�n�ralement des int m�me si on a pas besoin de grandes valeurs.
Pourtant, ce n'est pas ce qui se passe lorsque l'on d�clare des structures.
Observons plusieurs structures et leurs comportements en m�moire :
struct a
{
char a;
char b;
};
struct b
{
int a
char b;
int c
char d;
};
struct c
{
int a;
int b;
char c;
char d;
};
Bilan
On a pu observer qu'il est plus int�ressant de "trier" les types de donn�es en m�moire par ordre d�croissant, du plus grand au plus petit.
� noter : Un pointeur prend en g�n�ral (sous FreeBSD en tout cas) 4 octets, peu importe la donn�e vers laquelle il pointe.
Attention ! Ce n'est pas toujours vrai. Essayez par exemple de compiler un programme qui cast en (void *) un pointeur, vous aurez droit � un joli warning :
warning: cast from pointer to integer of different size
Bonnes structures, les petits potes !