Va comunque detto che anche il Metodo "
.Remove( )" opera certamente una
re-allocazione dinamica della memoria, precedentemente riservata, dato che vengono di fatto ridotti gli elementi costituenti l'array.
E' altresì vero che questa riduzione della quantità di memoria non determina
necessariamente l'allocazione di ulteriore porzione di memoria
altrove (ossia presso altro
indirizzo di memoria), potendosi senz'altro sovrascrivere i vecchi dati con i nuovi.
Inoltre, neppure una riallocazione della memoria "
in aggiunta" (mediante il Metodo "
.Push( )") determina
necessariamente l'allocazione di ulteriore porzione di memoria
altrove. Lo stesso Boege aveva posto questa sistuazione come eventuale.
Come possiamo vedere dai risultati ritornati da questo esempio in C:
#include <stdio.h>
#include <stdlib.h>
int main() {
/* Allochiamo dinamicamente 4 byte di memoria */
char *c = malloc(sizeof(char) * 4);
printf("%p\n", c);
/* Reallochiamo la memoria "aggiungendo" 2 byte */
c = realloc(c, sizeof(char) * 6);
printf("%p\n", c);
/* Liberiamo la memoria precedentemente riservata, affinché possa essere eventualmente sovrascritta da altri futuri dati */
free(c);
return (0);
}