slide1
Download
Skip this Video
Download Presentation
Gestion dynamique de la mémoire

Loading in 2 Seconds...

play fullscreen
1 / 18

Gestion dynamique de la mémoire - PowerPoint PPT Presentation


  • 169 Views
  • Uploaded on

Gestion dynamique de la mémoire. Méthode et Outils pour la Programmation Françoise Greffier Claude Daval-Frerot. Notion de pointeur. Application en langage C++. Gestion dynamique de la mémoire. Un modèle simplifié de la mémoire Gestion dynamique : intérêt Notion de pointeur

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Gestion dynamique de la mémoire' - badu


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Gestion dynamique de la mémoire

Méthode et Outils pour la Programmation

Françoise Greffier

Claude Daval-Frerot

Notion de pointeur

Application en langage C++

slide2

Gestion dynamique de la mémoire

  • Un modèle simplifié de la mémoire
  • Gestion dynamique : intérêt
  • Notion de pointeur
  • Trace en mémoire sur des exemples
  • Opérations sur les pointeur
la m moire
LA MÉMOIRE
  • EXECUTION LOGIQUE D ’UN PROGRAMME :
  • On distingue trois parties :
  • Code
  • Pile
  • Données implantées
  • - en mémoire statique
  • ou
  • - en mémoire dynamique (le TAS)
la memoire

Adresse

Contenu

LA MEMOIRE

DESCRIPTION PHYSIQUE :

Chaque emplacement mémoire est décrit par

- Une adresse pour localiser son emplacement,

- Un contenu (appelé une donnée)

modele simplifie
MODELE SIMPLIFIE
  • On simplifie les points suivants :
  • Différents types de codage des données
  • Le nombre d ’octets des données
  • La localisation et les limites du TAS
  • Les mécanismes de segmentation de la mémoire
  • On considère la mémoire sous cette forme :
  • Les données sont implantées en mémoire dans deux zones:
  • - une zone mémoire statique
  • - une zone mémoire dynamique (appelée TAS)
  • Un emplacement mémoire est défini par :
  • - une adresse
  • - un contenu (donnée)
  • - un identificateur
m moire le mod le

S

T

A

T

I

Q

U

E

Identificateur

Adresse

Contenu

T

AS

MÉMOIRE : LE MODÈLE
m moire statique exemple

S

T

A

T

I

Q

U

E

Identificateur

Adresse

Contenu

‘\0’

‘u’

‘d’

2

c[0] 0100:0003 ?

c[1] 0100:0004 ?

k=2;

c[2] 0100:0005 ?

T

AS

Mémoire statique (exemple)

k 0100:0002 ?

int k;

lettre 0100:0006 ‘u’

char c[3];

char lettre=‘u‘;

c[0]=‘d’;

c[1]= lettre;

c[2]= ‘\0’;

gestion dynamique
GESTION DYNAMIQUE

INTÉRÊT :

Disposer d ’emplacements en mémoire, utiles à une application, au fur et à mesure de l ’exécution d ’une application.

Ainsi :

plus besoin d ’anticiper sur la taille maximum d ’une collection.Exemple : char c [3]; //taille maximum de la chaîne = 2

En outre,

le TAS est un espace mémoire plus grand que la zone statique.

slide9

GESTION DYNAMIQUE

  • Gestion dynamique (au fur et à mesure …) :
  • Deux instructions sont utiles:
  • une,
  • pour réserver (ou allouer) un emplacement mémoire dans le TAS
  • une, pour libérer (désallouer) la mémoire : remettre la mémoire précédemment allouée à disposition du TAS

new en C/C++

delete en C/C++

slide10

GESTION DYNAMIQUE

Pour pouvoir effectuer les deux opérations : allouer et libérer un emplacement mémoire dans le TAS, il faut manipuler et donc désigner les emplacements mémoire.Or, à chaque emplacement mémoire est associé une adresse.

On va donc manipuler des adresses.

Un pointeur est une variable

qui a pour valeur (contenu) l’adresse

d ’un emplacement mémoire

généralement issu du TAS

slide11

Identif.

Adresse

Contenu

Ptr est une variable (statique) de type pointeur sur int. Elle est non définie

0200:0004

L ’instruction new retourne une adresse du TAS.

0200:0004 ?

GESTION DYNAMIQUE - EXEMPLE

int* ptr;

ptr 0100:0002 ?

Ptr=new int;

Cette

adresse(0200:0004)

est affectée à ptr.

slide12

Identif.

Adresse

Contenu

ptr 0100:0002 ?

0200:0004

int* ptr;

Ptr=new int;

*ptr est l ’identificateur de la valeur pointée par ptr.

0200:0004 ?

4

GESTION DYNAMIQUE - EXEMPLE

*ptr

*ptr = 4;

Nous avons alloué un entier

puis nous lui avons affecté

la valeur 4

slide13

Identif.

Adresse

Contenu

?

ptr 0100:0002 ?

0200:0004

int* ptr;

Ptr=new int;

*ptr = 4;

0200:0004 ?

*ptr

4

On n ’a plus besoin de

l ’entier alloué. On remet

la mémoire précédemment

allouée, à disposition du tas.

GESTION DYNAMIQUE - EXEMPLE

delete ptr;

slide14

Identif.

Adresse

Contenu

ptr 0100:0002 ?

0200:0004

int* ptr;

ptr1 0100:0003 ?0200:0004

Ptr=new int;

*ptr = 4;

0200:0004 ?

*ptr

4

int * ptr1;

ptr1=ptr;

AFFECTATION DE POINTEURS

Les pointeurs ptr et ptr1

pointent tous les deux

sur le même entier égal

à 4.

slide15

Identif.

Adresse

Contenu

NULL

Quand un pointeur

a pour valeur NULL,

ce pointeur pointe sur

aucun emplacement

mémoire.

CONSTANTE NULL

ptr 0100:0002 ?

int* ptr;

Ptr = NULL;

slide16

DONNER UNE VALEUR À UN POINTEUR

Il existe trois façons de donner une valeur à un pointeur

Instruction new

Affectation d’un autre pointeur

Affectation de la valeur NULL,

ou de la valeur d ’une adresse

slide17

NOTATIONS

On a la possibilité de désigner

Ptr : variable de type pointeur

*ptr : valeur pointée par ptr

&ptr : l ’adresse de la variable ptr

int k;

k=2;

int * ptr;

ptr=&k;

c[2]= ‘\0’;

bonne gestion de la m moire
Bonne gestion de la mémoire
  • A chaque réservation d ’un emplacement mémoire (new)
  • doit correspondre une libération
  • de cet emplacement (delete).
  • Attribuer des noms de variables explicites :
  • ptr pour les pointeurs.
ad