|
|
Allocation
de mémoire
new - delete |
|
Réservation
statique - réservation dynamique
|
|
Il arrive souvent que l'on ait à réserver de la mémoire pour y enregistrer des données pouvant occuper un espace important. C'est le cas des fichiers composés d'une suite (tableau) de structures telles que : typedef
struct On est alors tenté de déclarer ce tableau sous la forme : Fiche Fichier[NB_MAX_FICHES]; Ce qui réserve bien l'espace nécesaire en mémoire. Si on compte y enregistrer tout de suite un nombre de fiches proche de NB_MAX_FICHES, c'est la meilleure solution. Mais, dans les premiers temps de la saisie, peu de fiches sont rentrées et l'espace réservé est abusivement grand vis à vis de l'espace réellement utilisé. Or
la mémoire d'un ordinateur est une ressource partagée avec
les autres programmes actifs. Ce
mécanisme intervient quand la réservation de mémoire
par les programmes actifs dépasse la capacité physique de
la mémoire réelle. Tous ces aller-retour entre mémoire et disque ralentissent considérablement les programmes. Deux solutions :
Pour économiser la mémoire, rien de tel que de n'utiliser à chaque moment que la quantité strictement nécessaire. La méthoode précédente : Fiche Fichier[NB_MAX_FICHES]; ne peut pas être très économe car si on déclare NB_MAX_FICHES = 20, on ne pourra changer ce nombre à 30 ou 40 qu'en recompilant le programme, ce que le client ne peut pas faire. Il est heureusement possible de réserver de la mémoire progressivement, au cours du déroulement du programme, au fur et à mesure des besoins. Attention
! cette opération est de la compétence du système
d'exploitation de votre ordinateur. L'OS (Operating System) ou "système d'exploitation" doit :
Il vaut mieux laisser à l'OS cette gestion compliquée (d'ailleurs on ne peut pas faire autrement). Nous disposons pour cela de deux opérateurs (ce ne sont pas des fonctions) :
Et, aussi de deux fonctions :
La suite vous montrera comment les utiliser Pour
le moment, nous commençons par "new" et "delete" |
|
Opérateurs
"new" et "delete" par des exemples
|
||||||||||||||||||||||||||
|
|
Les
règles
|
|
Réservation d'une variable : pointeur_de_variable
= new type_de_la_variable ; Réservation d'un tableau de variables : pointeur_de_variable
= new type_de_la_variable[nombre_d_elements]
; |
|
|