Ho cercato di leggere su questo, ma non riesco a trovare alcuna menzione.Qual è la vita di S "..." in Forth?
Secondo la norma, una stringa creata con S"
non può essere modificato, e da un semplice esperimento in Gforth è ovvio che lo spazio per la stringa non viene dalle zone del dizionario o pad:
hex
here . 7F48AB3B8758 ok
pad . 7F48AB3B8808 ok
s" test" .s <2> 77FDD0 4 ok
Per quanto tempo posso aspettare che quell'indirizzo sia valido?
In altre parole, se memorizzo questo indirizzo (e il conteggio) in una variabile, posso farvi riferimento in un secondo momento nel programma o devo spostarlo in una posizione separata nel dizionario o nell'heap? E se non memorizzo l'indirizzo, perderò memoria?
Grazie mille! Ho ovviamente perso quei paragrafi. Almeno questo lo rende chiaro. – harald
Hai ragione, anche se in gForth "almeno una stringa di tempo di interpretazione" significa in realtà quante ne vuoi. In gForth, 'S" 'al momento dell'interpretazione assegna la memoria, copia la stringa lì e non la libera mai (va bene per l'interpretazione). L'ho scoperto digitando' see s "' e quindi 'see save-mem'. –