Memoriile se gestioneaza special deoarece si ele pot fi valori ale variabilelor si deoarce, pentru
a schimba valorile variabilelor e nevoie de modificarea pointerilor spre variabile, deci e nevoie
de referinte la acesti pointeri, altfel spus de referinte la variabile. Daca o astfel
de referinta pointeaza intr-o memorie in sensul de mai sus, si memoria e valoare a unei variabile, si
daca variabila respectiva ajunge sa aiba numarul de referinte zero, deci se elibereaza, si daca
valoarea ei (memoria) ajunge cu numarul de referinte zero si se elibereaza, referinta de la inceput
va deveni invalida, fara ca acest lucru sa se observe. E cazul clasica al efectelor laterale in atribuiri:
In acest exemplu, prima atribuire se amana pe mai tarziu, pana dupa ce valoarea returnata de blocul din dreapta va fi fost calculata. Se salveaza deci referinta la x[1], sa zicem &x[1], se intra in blocul din dreapta si se elibereaza memoria valoarea a lui x, in care &x[1] este o referinta, pentru a i se atribuie lui x o valoare scalara, devenind intregul 3. Pointerul &x[1] va fi invalid.
De aceea, solutia este ca inainte de a intra in blocul din dreapta, sa se salveze memoriile (incrementeze numarul de referinte a valorilor) tuturor referintelor din lista din stanga simbolului de atribuire. La iesirea din bloc, se va efectua o asignare la referinta, dupa care se va elibera memoria; aceasta insa va avea numarul de referinte zero, fiind deci silentios eliberata.
Ca si consecinta, efectele laterale sunt bine suportate in plint, efectul lor negativ fiind doar atribuiri fara sens.