K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>どたばたしておりまして対応が遅れました。すみません。 > >いえ、大丈夫です。返事を頂いてありがとうございます。 > >>>realloc()が対象データを移動しかねないので、移動した場合、もしスタックのなかでネイティブ関数に渡す引数があれば、それを指すポインタ(arg_p)が無効化される恐れがありますね。 >> >>本当ですね……初歩的なミスでした。ご指摘ありがとうございます。 >>直すなら、ポインタでなく添字を渡して関数経由でアクセスするようにするのかと思いますが、ネイティブ関数全体に影響が出ます。少し考えさせてください。 >>ご指摘ありがとうございました。 > >たぶんですけど、直すのに影響があんまり出ないやり方があります。crowbarスタックを一つの配列ではなく、複数の配列をリンクするによりスタックの拡張ができます。スタック拡張する場合には新たな配列をmalloc()して、それをもとにあったスタックとリンクして、それでrealloc()を回避できますますね。これが「chunked stack」とも言います。 > >>>ついでに、CRB_create_interpreter()で、interpreter->stack.stack_alloc_sizeの初期値が0になってますが、それがSTACK_ALLOC_SIZEになったほうがいいではないでしょうか。 >> >>NULLを第一引数とするreallocはmallocと同じなので、どちらでもよいのではないでしょうか。 > >はい、どちらでも良いですね。 > >- Kris
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!