Gestion dynamique de la mémoire. Occupation mémoire de différents types de données. Variables et mémoires

Documents pareils
LES TYPES DE DONNÉES DU LANGAGE PASCAL

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

F. Barthélemy. 17 mai 2005

Généralités sur le Langage Java et éléments syntaxiques.

Technologie Web. Conception de sites Web. Alexandre Pauchet. INSA Rouen - Département ASI. INSA - ASI TechnoWeb : Rappels UML 1/21

Programmation structurée et algorithmes de base en Pascal

Examen Médian - 1 heure 30

Structure fonctionnelle d un SGBD

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Programmation Objet Java Correction

Analyse de sécurité de logiciels système par typage statique

MegaStore Manager ... Simulation de gestion d un hypermarché. Manuel du Participant

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Derrière toi Une machine virtuelle!

Programmation C. Apprendre à développer des programmes simples dans le langage C

Enseignement secondaire technique

as Architecture des Systèmes d Information

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

Votre Réseau est-il prêt?

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

M Études et développement informatique

CESI Bases de données

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Java Licence Professionnelle CISII,

STRICTEMENT CONFIDENTIEL

Compléments d algorithmique L1MPCIE

Compilation (INF 564)

La JVM. La machine virtuelle Java. La JVM. La JVM

Programmation avec des objets : Cours 7. Menu du jour

Dérivation : Résumé de cours et méthodes

MAIRIE DE BRENNILIS LE BOURG BRENNILIS EXTRAIT DU REGISTRE DES DÉLIBÉRATIONS DU CONSEIL MUNICIPAL DE BRENNILIS.

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

QUESTION 1 {2 points}

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Système de Gestion de Fichiers

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Table des matières. Introduction

UE Programmation Impérative Licence 2ème Année

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Diagrammes de Package, de déploiement et de composants UML

Algorithmique & programmation

Plan du cours. Historique du langage Nouveautés de Java 7

Réunion d échanges relative à l organisation des missions d instruction des autorisations d urbanisme

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Réforme relative au permis de construire et aux autorisations d urbanisme

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Notion de base de données

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Cours d Algorithmique et de Langage C v 3.0

Premiers Pas en Programmation Objet : les Classes et les Objets

Rappels d architecture

Le génie logiciel. maintenance de logiciels.

OCL - Object Constraint Language

Progressons vers l internet de demain

Algorithmes et programmation en Pascal. Cours

L exclusion mutuelle distribuée

Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel

Les différents types de relation entre les tables

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Cours d initiation à la programmation en C++ Johann Cuenin

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Université de Bangui. Modélisons en UML

Quelques algorithmes simples dont l analyse n est pas si simple

Logiciel de Base. I. Représentation des nombres

Cours STIM P8 TD 1 Génie Logiciel

En date du 11 décembre 2008

CHAPITRE 4 LA VALORISATION DES STOCKS COURS DE COMPTABILITE ANALYTIQUE SEMESTRE 2 DUT TC

La carte à puce. Jean-Philippe Babau

Cours Informatique 1. Monsieur SADOUNI Salheddine

Exercices sur les interfaces

Logiciel de base. Première année ENSIMAG

Chap17 - CORRECTİON DES EXERCİCES

Corrigé des TD 1 à 5

ALGORITHMIQUE ET PROGRAMMATION En C

CODAGE DES SMS. 2 Commandes «AT» 25 3 Matériels utilisés 55 4 Interfacer un téléphone GSM 73 5 Réalisations électroniques 101

Guide d Estimation Volumétrique des Logs

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Unity Real Time 2.0 Service Pack 2 update

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Annexe : La Programmation Informatique

Vérification formelle de la plate-forme Java Card

Cours 1: Java et les objets

GYMNASTIQUE ACROBATIQUE

Cours de Programmation en Langage Synchrone SIGNAL. Bernard HOUSSAIS IRISA. Équipe ESPRESSO

Définitions. Numéro à préciser. (Durée : )

Compression de Données - Algorithme de Huffman Document de Conception

DOMAIN NAME SYSTEM. CAILLET Mélanie. Tutoriel sur le DNS. Session Option SISR

Calculs de probabilités

Internet et Big Brother : Réalité ou Fantasme? Dr. Pascal Francq

Transcription:

Nour-Eddine Oussous, Éric Wegrzynowski 18 octobre 2006 Introduction Les pointeurs Les pointeurs en Pascal Déclaration Accès à la zone pointée Affectation d une valeur à un pointeur Affectation de pointeurs Adresse d une iable Gestion dynamique de mémoire Occupation mémoire de différents types de données Déclaration d une iable = réservation d un espace mémoire qui est fonction du type de la iable. s avec Free Pascal (avec l option -Mobjfpc) sur architecture i386 Déclaration Mémoire réservée somme : INTEGER ; 4 octets n : CARDINAL ; 4 octets trouve : BOOLEAN ; 1 octet moyenne : REAL ; 8 octets tableau : Array[1..100] of REAL ; 100 8 = 800 octets nom : STRING[20] ; 21 octets Variables et mémoires n : CARDINAL b : BOOLEAN x : REAL MÉMOIRE 4 octets 1 octet 8 octets Fig.: Variables en mémoire

statique/dynamique de mémoire Les pointeurs Déclaration d une iable d un type T = allocation statique d une zone mémoire Possibilité d allocation dynamique de mémoire Un pointeur est une iable qui contient l adresse d une donnée contenue en mémoire. La déclaration d une iable pointeur réserve 4 octets nécessaires au codage de l adresse mémoire de la donnée pointée mais ne réserve aucune mémoire pour la donnée pointée Quel que soit le type de la donnée pointée, la taille mémoire du pointeur est toujours la même : 4 octets Pointeur en mémoire Déclaration Déclaration d un pointeur pointeur vers une donnée de type REAL (4 octets) MÉMOIRE A1 42 B5 8F Fig.: Pointeur vers un REAL ADRESSE MÉMOIRE A142B58F donnée de type REAL (8 octets) En Pascal, les pointeurs sont des iables dont le type est celui de la donnée pointée précédé d un ˆ P : ˆ<type> ; s de iables pointeurs / / p o i n t e u r v e r s C A R D I N A L R : ˆREAL ; / / p o i n t e u r v e r s R E A L

Accès à la zone pointée L opérateurˆ L opérateur ˆ permet d obtenir la zone pointée par un pointeur. Pˆ peut être considéré comme une iable du type de la zone pointée. / / a f f e c t a t i o n a Y d e l a v a l e u r p o i n t e e p a r P Y := Pˆ ; / / a f f i c h a g e d e l a v a l e u r p o i n t e e p a r P w r i t e l n (P ˆ ) ; Y doit avoir le type des valeurs pointées par P Accès à la zone pointée Autre exemple type COMPLEXE = record r e : REAL ; im : REAL ; { COMPLEXE } ; P : ˆCOMPLEXE;... { P p o i n t e v e r s u n c o m p l e x e } / / a f f i c h a g e d e l a p a r t i e r e e l l e w r i t e l n (Pˆ. r e ) ; / / a f f i c h a g e d e l a p a r t i e i m a g i n a i r e w r i t e l n (Pˆ. im ) ;... est un pointeur (de tout type) particulier qui ne pointe sur rien. P := NIL ; / / P n e p o i n t e s u r r i e n Lorqu un pointeur vaut NIL, il n y a aucun sens de tenter d accéder à la zone pointée Si P vaut NIL, à l exécution l instruction X := Pˆ ; produira un comportement imprévisible.

Affectation de pointeurs Affectation de pointeurs Il est possible d affecter la valeur d un pointeur à un autre pointeur du même type. P := Q; / / P p o i n t e v e r s l a m e m e z o n e q u e Q CU : P et Q pointent tous deux vers le même type de données. Adresse d une iable L opérateur @ L opérateur @ appliqué à une iable donne l adresse de cette iable. Cette adresse peut être affectée à un pointeur. X : CARDINAL ; X := 3 ; P := @X ; / / P p o i n t e v e r s X Adresse d une iable Aucune différence entre une adresse et une adresse! possibilité d affecter à un pointeur vers une donnée d un certain type l adresse d une iable d un autre type!! résultats imprévisibles!!! X : REAL ; X := 3.141592 ; P := @X; / / a u t o r i s e, m a i s q u e p o i n t e P??? L allocation dynamique de mémoire est la possibilité de réserver une zone mémoire à l exécution d un programme. nécessité de disposer d un espace mémoire dans lequel faire l allocation : cette zone est nommée TAS.

La procédure new La procédure new, appliquée à un pointeur P, 1. réserve une zone mémoire dans le TAS d une taille correspondant à la taille des données pointées par P, 2. et attribue à P l adresse de cette zone. R : ˆREAL ; new(p ) ; / / 4 o c t e t s a l l o u e s d a n s l e TAS, / / P p o i n t e v e r s c e t t e z o n e new(r ) ; / / 8 o c t e t s a l l o u e s d a n s l e TAS, / / R p o i n t e v e r s c e t t e z o n e de mémoire affectation d une valeur. nécessité après allocation, d attribuer une valeur à la zone allouée (... suite) Pˆ := 4 ; Rˆ := 3. 1 4 1 5 9 2 ; (à suivre... ) L affectation d une zone mémoire par une instruction du type Pˆ :=... peut avoir des effets de bord. { X =?? } X := 5 ; { X = 5 } P := @X; { X = 5, P = a d r e s s e d e X } Pˆ := 6 ; { X = 6, P = a d r e s s e d e X } w r i t e l n (X ) ; / / a f f i c h e 6!! La désallocation de mémoire est l opération inverse de l allocation : elle libère une zone du TAS qui a été allouée. opération nécessaire pour ne pas épuiser le TAS, à réaliser dès qu une zone n a plus d utilité.

La procédure dispose La procédure dispose, appliquée à un pointeur P, 1. libère la zone mémoire du TAS pointée par P 2. et r indéterminée la valeur de P. new(p) ; / / a l l o c a t i o n d e 4 o c t e t s Pˆ := 6 ; / / a t t r i b u t i o n d u n e v a l e u r dispose (P ) ; / / d e s a l l o c a t i o n d e l a z o n e La procédure dispose ne doit être appliquée qu à des pointeurs pointant sur une zone allouée dynamiquement (par un new). La désallocation d une zone pointée peut avoir un effet de bord lorsque cette zone est pointée par d autres pointeurs, ou correspond à une iable. new(p ) ; / / a l l o c a t i o n d u n e z o n e d a n s l e TAS Pˆ:= 1 0 ; Q := P ; / / Q p o i n t e v e r s l a m e m e z o n e q u e P dispose (P) ; / / l i b e r a t i o n d e l a z o n e p o i n t e e p a r P w r i t e l n (Qˆ ) ; / / a f f i c h e n i m p o r t e q u o i La désallocation n est pas simple Gérer la désallocation n est pas une opération simple. Certains langages de programmation (Lisp, Java,... ) la gèrent automatiquement. La gestion automatique de récupération de mémoire est nommée ramasse-miettes (garbage collector en anglais).