He estado tratando de leer sobre esto, pero no puedo encontrar ninguna mención de ello.¿Cuánto dura la vida de S "..." en Forth?
Según la norma, una cadena creada con S"
no se puede modificar, y desde un simple experimento en Gforth Es obvio que el espacio para la cadena no viene de diccionario o una almohadilla de las áreas:
hex
here . 7F48AB3B8758 ok
pad . 7F48AB3B8808 ok
s" test" .s <2> 77FDD0 4 ok
¿Cuánto tiempo puedo esperar que la dirección sea válida?
En otras palabras, si almaceno esta dirección (y conteo) en una variable, ¿puedo volver a referirme a ella más adelante en el programa, o tengo que moverla a una ubicación separada en el diccionario o en el montón? Y si no almaceno la dirección, ¿perderé la memoria?
¡Muchas gracias! Obviamente me perdí esos párrafos. Al menos eso lo deja en claro. – harald
Está en lo correcto, aunque en gForth "al menos una cadena de tiempo de interpretación" en realidad significa tantas como quiera. En gForth, 'S" 'en el tiempo de interpretación asigna memoria, copia la cadena allí, y nunca la libera (está bien hacer para la interpretación). Descubrí esto escribiendo' see s "' y luego 'see save-mem'. –