環境:VisualStudio2008
言語:C++(使ってるlibの内部はCかも)
CのFILE*って、スレッドをまたぐと無効になったりするのでしょうか?
ネットで拾ったlibをプログラムに組み込んでみたところ、
そのlibの中でfopenしたファイルポインタはきちんと使えてるのですが、
libの外でfopenしたポインタを渡すように少しlibのソースを改造すると
途中で例外が出てプログラムが止まるようになります。
自分で調べた限りでは、(おそらくlibの中で呼んでる)fseek関数の中で _lock_str(FILE*) したときに
「ファイルのロックを行うifブロックに流れている」のですが、
外からファイルポインタを渡すとそのifブロックを外れてelseで EnterCriticalSection という関数に流れてしまい
それが例外を吐いているようです。
libがfopenする前にスレッドを分けている感じなので、
ひょっとしたらマルチスレッドが原因なのかな?と思っているのですが、そんなもんなんでしょうか
エスパーが質問に答えるスレ
■ このスレッドは過去ログ倉庫に格納されています
191デフォルトの名無しさん
2009/12/29(火) 14:52:41■ このスレッドは過去ログ倉庫に格納されています
