Chapitre 7. Maintenance des sessions
325
[1] 12.8 4.5
> addr <- getaddr(x)
# Récupère l’adresse de la première case
# du bloc de 128 cases où est stockée
# x.
> writeaddr(addr,6.2)
> x
[1] 6.2 4.5
> writeaddr(addr+8L,7.1) # Un double est codé sur 8 octets.
> x
[1] 6.2 7.1
Expert
R ne peut acc´ eder qu’aux cases m´ emoires qu’il a lui-mˆ eme allou´ ees, et
les autres logiciels ou programmes ext´ erieurs ` a R ne peuvent pas acc´ eder
aux zones m´ emoires r´ eserv´ ees par R. Et c’est bien heureux ! Car sinon, les
donn´ ees de nos calculs pourraient ˆ etre alt´ er´ ees par des programmes externes
` a R. Mˆ eme une autre session de R ne peut acc´ eder aux zones m´ emoires
r´ eserv´ ees par la premi` ere. Ainsi, tapons dans une premi` ere session de R :
> require("LeLogicielR")
> x <- 1L
> (addr <- getaddr(x)) ; save(addr,file="addr.RData")
qui est l’adresse (hexad´ ecimale) du bloc-m´ emoire contenant la valeur enti` ere
1. Puis tapons dans une deuxi` eme session de R :
> require("LeLogicielR")
> load("addr.RData")
> addr
> writeaddr(addr,7L)
Alors (si la deuxi` eme session de R ne plante pas !) on pourra v´ erifier que
la valeur de x dans la premi` ere session n’a pas ´ et´ e modifi´ ee. Revenons ` a la
premi` ere session de R et tapons :
> x # On constate que la tentative de modifier la valeur de x
# dans une autre session de R est vouée à l’échec
[1] 1
> # Tentons cette modification dans la même session:
> writeaddr(addr,7L)
> # Là ça marche!
> x
[1] 7
325
[1] 12.8 4.5
> addr <- getaddr(x)
# Récupère l’adresse de la première case
# du bloc de 128 cases où est stockée
# x.
> writeaddr(addr,6.2)
> x
[1] 6.2 4.5
> writeaddr(addr+8L,7.1) # Un double est codé sur 8 octets.
> x
[1] 6.2 7.1
Expert
R ne peut acc´ eder qu’aux cases m´ emoires qu’il a lui-mˆ eme allou´ ees, et
les autres logiciels ou programmes ext´ erieurs ` a R ne peuvent pas acc´ eder
aux zones m´ emoires r´ eserv´ ees par R. Et c’est bien heureux ! Car sinon, les
donn´ ees de nos calculs pourraient ˆ etre alt´ er´ ees par des programmes externes
` a R. Mˆ eme une autre session de R ne peut acc´ eder aux zones m´ emoires
r´ eserv´ ees par la premi` ere. Ainsi, tapons dans une premi` ere session de R :
> require("LeLogicielR")
> x <- 1L
> (addr <- getaddr(x)) ; save(addr,file="addr.RData")
qui est l’adresse (hexad´ ecimale) du bloc-m´ emoire contenant la valeur enti` ere
1. Puis tapons dans une deuxi` eme session de R :
> require("LeLogicielR")
> load("addr.RData")
> addr
> writeaddr(addr,7L)
Alors (si la deuxi` eme session de R ne plante pas !) on pourra v´ erifier que
la valeur de x dans la premi` ere session n’a pas ´ et´ e modifi´ ee. Revenons ` a la
premi` ere session de R et tapons :
> x # On constate que la tentative de modifier la valeur de x
# dans une autre session de R est vouée à l’échec
[1] 1
> # Tentons cette modification dans la même session:
> writeaddr(addr,7L)
> # Là ça marche!
> x
[1] 7
