スレ立てるまでもない質問はここで 116匹目at TECH
スレ立てるまでもない質問はここで 116匹目 - 暇つぶし2ch333:デフォルトの名無しさん
12/01/21 08:36:21.02
VS2008 VC++

std::ostringstreamの変数に対して文字追加して結合していく関数を作り、
直後にchar*型で取得した文字列をfwriteでファイルに出力をするというコンソールアプリを作っています。
for( 約10万回 ){
 std::ostringstream str;
  func( &str ){ // 関数 ↓関数の中身
     for( 約100回 )
      *pStr << "文字列,";
  }


  fwrite( str..str().c_str()を出力 );
  str.str("");  // 念のため
  str.clear();  // 念のため
}
ざっくり書くとこんな感じなのですが、
func関数の中の文字列を*pStrに入れるところで例外エラーで止まる場合があります。
例えば大本が3万回目のループで、関数内は50回目のループのところ・・・など。
1度止まるとそのままであれば何度実行しても同じ場所で止まりますが、
ソースに変化を持たせると止まる位置が変わったり、
func関数内でprintfを使って文字列を表示させるなどの処理を入れると問題なく通ったりします。
std::stringに置き換えても似たような事象がおき原因が特定できなかったのですが、
string系に対して文字列を追加していくのとfwriteは何か競合していたりするのでしょうか。
文字列の追加の途中なのでメモリが確保できなかった・・・と思うのですが、
タスクマネージャーで見る限りはメモリの使用量は増加していません。


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