以下のメッセージを削除します。


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


投稿者:RednaxelaFX
2013/11/27 02:02:07

Link:http://rednaxelafx.iteye.com
前橋様、

もう一つ、crowbarスタックとネーティブ仮引数について聞きたいことがあります。

crowbar_book_0_4では、crowbarスタックはrealloc()を使って拡張します。そしてネイティブ関数に渡す引数の配列がはcrowbarスタックに積んでいます。realloc()が対象データを移動しかねないので、移動した場合、もしスタックのなかでネイティブ関数に渡す引数があれば、それを指すポインタ(arg_p)が無効化される恐れがありますね。

ついでに、CRB_create_interpreter()で、interpreter->stack.stack_alloc_sizeの初期値が0になってますが、それがSTACK_ALLOC_SIZEになったほうがいいではないでしょうか。stack_alloc_sizeの初期値が0なら、最初にpush_value()を呼び出すと、stack_pointer == stack_alloc_sizeので無駄にMEM_realloc()でcrowbarスタック拡張をします。

- Kris

パスワード:

管理者削除