dupptrについて分からないことがあるので教えてください。
ある大きなバッファ(メモリ)を複数の変数に割り当てたいのですが、
重複した範囲を指定すると期待通りになりません。
[0][1][2][3][4][5][6][7][8][9]
というメモリブロックがあったとき、
変数 p1 には [0] 〜 [9] を
変数 p2 には [4] 〜 [9] を
変数 p3 には [8] 〜 [9] を割り当てたいと思っています。
txt = "0123456789" ptr = varptr(txt) dupptr p1, ptr + 0, 10, 2 dupptr p2, ptr + 4, 6, 2 dupptr p3, ptr + 8, 2, 2 mes "p1 = " + p1 + "\np2 = " + p2 + "\np3 = " + p3 + "\n" p2 = "++" mes "p1 = " + p1 + "\np2 = " + p2 + "\np3 = " + p3 + "\n" repeat 10 mes strf("txt.%2d = %c", cnt + 1, peek(txt, cnt)) loop
これを実行して頂くと、p3 の内容がクリアされていることが分かります。
p1 は 0123++<NULL>
p2 は ++<NULL>
になるのはOKなのですが、
p3 は 89 のまま、という動作を期待しています。
([0][1][2][3][+][+][NULL][7][8][9]であって欲しい)
間違っていることなどありますでしょうか?
よろしくお願いします。