【Lua】組み込み系言語総合 その2【Squirrel】
at TECH
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