私はこれを読もうとしてきましたが、私はそれについて言及を見つけることができません。ForthのS "..."の生涯は何ですか?
標準によると、S"
で作成された文字列を変更することはできません、とGforthで簡単な実験から、それは文字列のためのスペースが辞書やパッドの地域から来ていないことは明らかです:
hex
here . 7F48AB3B8758 ok
pad . 7F48AB3B8808 ok
s" test" .s <2> 77FDD0 4 ok
そのアドレスはどれくらいの期間有効であると思いますか?
つまり、このアドレス(およびカウント)を変数に格納すると、後でプログラムで参照することはできますか、それを辞書またはヒープの別の場所に移動する必要がありますか?私が住所を保管しないと、記憶が漏れてしまいますか?
ありがとうございました!私は明らかにそれらの段落を逃した。少なくともそれはそれを明らかにする。 – harald
あなたは正しいですが、gForthでは "少なくとも1つの解釈時の文字列"は実際にあなたが望む数を意味します。 gForthでは、 'S ''は解釈時にメモリを割り当て、そこに文字列をコピーし、決して解放しません(解釈するためには大丈夫です)。 –