Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Pr. A. KADDARI
1
Programmation avancée en C 07/03/2022
Introduction
I. Allocation dynamique de la mémoire :
I.1 Les zones mémoire d’un programme en C,
I.2 Les types des variables d’un programme en C,
I.3 Allocation statique,
I.4 Allocation dynamique,
II. Allocation dynamique et application sur les tableaux,
III. Allocation dynamique et application sur les structures.
2
Programmation avancée en C 07/03/2022
3
Programmation avancée en C 07/03/2022
zone « Code » :
contient le code binaire
de notre programme
compilé.
zone « statique » :
contient les données
globales du programme
(celles qui sont en vie
durant tout le temps
d'exécution du
programme) Mémoire centrale
zone « tas » :
Utilisée pour stocker les
données allouées
dynamiquement.
zone « pile » :
Contient des variables
locales, gère le passage
de paramètres et de
contextes lors d'appels
de fonctions, gère la
récursivité, etc. Mémoire centrale
4
Programmation avancée en C 07/03/2022
A 1
2
B
3
C
4
D
E Code binaire
Exemple de programme Zones mémoires
en C correspondantes
10
5
Programmation avancée en C 07/03/2022
11
Introduction
I. Allocation dynamique de la mémoire :
I.1 Les zones mémoire d’un programme en C,
I.2 Les types des variables d’un programme en C,
I.3 Allocation statique,
I.4 Allocation dynamique,
II. Allocation dynamique et application sur les tableaux,
III. Allocation dynamique et application sur les structures.
12
6
Programmation avancée en C 07/03/2022
13
14
7
Programmation avancée en C 07/03/2022
15
16
8
Programmation avancée en C 07/03/2022
Introduction
I. Allocation dynamique de la mémoire :
I.1 Les zones mémoire d’un programme en C,
I.2 Les types des variables d’un programme en C,
I.3 Allocation statique,
I.4 Allocation dynamique.
II. Allocation dynamique et application sur les tableaux.
III. Allocation dynamique et application sur les structures.
17
18
9
Programmation avancée en C 07/03/2022
19
20
10
Programmation avancée en C 07/03/2022
Syntaxe de la fonction :
type_var* ptr=NULL ;
ptr = (type_var*)malloc( nb_octets );
if (ptr==NULL) ...
Ou bien :
nb_octets est à calculer par sizeof
type_var* ptr=NULL ;
ptr = (type_var *)malloc( sizeof(type_var) * nb_var );
if (ptr==NULL) ...
21
tas
22
11
Programmation avancée en C 07/03/2022
23
24
12
Programmation avancée en C 07/03/2022
26
13
Programmation avancée en C 07/03/2022
27
28
14
Programmation avancée en C 07/03/2022
29
30
15
Programmation avancée en C 07/03/2022
31
32
16
Programmation avancée en C 07/03/2022
33
int main(){
int n = 0, i = 0;
int* t = NULL;
printf(« Donnez la taille n="); // On demande la taille
scanf("%d", &n);
t = (int*)malloc(n * sizeof(int)); // allocation
if (t == NULL) exit(1); // On arrête tout
// remplissage du tableau
for (i = 0 ; i < n ; i++) {
printf( "t[%d] =", i);
scanf("%d", &t[i]);
}
34
17
Programmation avancée en C 07/03/2022
18