Próbowałem przeczytać o tym, ale nie mogę znaleźć żadnej wzmianki o tym.Jakie jest życie S "..." w Forth?
Zgodnie z normą, ciąg utworzony z S"
nie mogą być modyfikowane, a od prostego eksperymentu w Gforth to oczywiste, że przestrzeń dla napisu nie pochodzi z obszarów słownika lub podkładki:
hex
here . 7F48AB3B8758 ok
pad . 7F48AB3B8808 ok
s" test" .s <2> 77FDD0 4 ok
Jak długo mogę oczekiwać, że ten adres będzie ważny?
Innymi słowy, jeśli przechowuję ten adres (i liczę) w zmiennej, czy mogę odnieść się do niego później w programie, czy też muszę przenieść go do oddzielnej lokalizacji w słowniku lub sterty? A jeśli nie będę przechowywać adresu, czy wycieknie z pamięci?
Wielkie dzięki! Najwyraźniej brakowało mi tych akapitów. Przynajmniej to wyjaśnia. – harald
Masz rację, chociaż w gForth "przynajmniej jeden ciąg interpretacji czasu" oznacza tyle, ile chcesz. W gForth, 'S" 'w czasie interpretacji alokuje pamięć, kopiuje tam łańcuch i nigdy go nie uwalnia (w porządku do interpretacji) Odkryłem to, wpisując' see s "', a następnie 'see save-mem'. –