エスパーが質問に答えるスレat TECH
エスパーが質問に答えるスレ - 暇つぶし2ch191:デフォルトの名無しさん
09/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する前にスレッドを分けている感じなので、
ひょっとしたらマルチスレッドが原因なのかな?と思っているのですが、そんなもんなんでしょうか


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