【Lua】組み込み系言語総合 その2【Squirrel】 at TECH
[2ch|▼Menu]
130:デフォルトの名無しさん
09/07/31 21:27:07
>>127 は根本的なところを理解してないようだ。スタックにあるんだからpop すればいいんだよ。

まず

lua_State *base = lua_newstate();
lua_State *ls = lua_newthread(base);

は、

lua_State *base = lua_newstate();
lua_newthread(base);
lua_State *ls = lua_tothread(base, -1)

と意味的には等価ね。

ここで ls は、あくまでスタック上にあるスレッドの情報を、
直接ポインタとして参照してるだけで、別にリファレンスを持ってるわけではない
lua_newthread がこれを返してるのは、単に便利だからにすぎない

この状態で、lua_pop(base,1) することで、スタックの末尾にあるもの=さっき作ったスレッドが
破棄されて解放されることになる。これでスレッドが破棄された後に ls にアクセスすると、
実体がなくなってるポインタの参照になるから誤動作を引き起こす

一般的には、スレッドをスタックにつんだままにしとくのはわけわかになるので、
>>126の言ってる通りに管理することになる


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4277日前に更新/247 KB
担当:undef