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

|