K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]


新規投稿 | 開設者ホームページへ戻る | ヘルプ


[1883] Re:crowbar_book_ver4について
返信


投稿者:RednaxelaFX
2013/11/30 23:34:37

Link:http://rednaxelafx.iteye.com
>どたばたしておりまして対応が遅れました。すみません。

いえ、大丈夫です。返事を頂いてありがとうございます。

>>realloc()が対象データを移動しかねないので、移動した場合、もしスタックのなかでネイティブ関数に渡す引数があれば、それを指すポインタ(arg_p)が無効化される恐れがありますね。
>
>本当ですね……初歩的なミスでした。ご指摘ありがとうございます。
>直すなら、ポインタでなく添字を渡して関数経由でアクセスするようにするのかと思いますが、ネイティブ関数全体に影響が出ます。少し考えさせてください。
>ご指摘ありがとうございました。

たぶんですけど、直すのに影響があんまり出ないやり方があります。crowbarスタックを一つの配列ではなく、複数の配列をリンクするによりスタックの拡張ができます。スタック拡張する場合には新たな配列をmalloc()して、それをもとにあったスタックとリンクして、それでrealloc()を回避できますますね。これが「chunked stack」とも言います。

>>ついでに、CRB_create_interpreter()で、interpreter->stack.stack_alloc_sizeの初期値が0になってますが、それがSTACK_ALLOC_SIZEになったほうがいいではないでしょうか。
>
>NULLを第一引数とするreallocはmallocと同じなので、どちらでもよいのではないでしょうか。

はい、どちらでも良いですね。

- Kris
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[ より新しい投稿] [ より古い投稿]