• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:なぜアロケーションエラーになるのかが分かりません)

なぜアロケーションエラーになるのかが分かりません

このQ&Aのポイント
  • 自作アプリが動作中に作成するログを一定期間以上前のファイルを削除すべく関数を作成し、スレッドとして起動した際、アプリケーションが一定時間でハングアップする問題が発生しています。デバッガのスタックを確認したところ、CStringの代入時にアロケーションエラーが発生しているようです。その原因についての特定はできていませんが、問題が存在する可能性があります。
  • 自作アプリが動作中に一定期間以上前のログファイルを削除するための関数を作成しました。しかし、この関数をスレッドとして起動すると、アプリケーションが約3時間でハングアップしてしまいます。デバッガでスタックを確認したところ、CStringの代入時にアロケーションエラーが発生しているようです。原因を特定することができず、問題のある可能性があります。
  • WindowsXPとVC6++を使用している環境で、自作アプリが動作中に作成するログファイルを一定期間以上前のものを削除するための関数を作成しました。しかし、この処理をスレッドとして起動すると、アプリケーションが約3時間でハングアップします。デバッガのスタックを確認したところ、CStringの代入時にアロケーションエラーが発生しているようです。問題の原因が特定できず、何が問題なのかを知りたいと考えています。

質問者が選んだベストアンサー

  • ベストアンサー
  • hidebun
  • ベストアンサー率50% (92/181)
回答No.2
koi1234
質問者

お礼

本日変更かけたソースにて7時間ほど連続運転したところ状況が改善されてました こんな意味不明なことがありうるとは・・・・困ったもんだ

koi1234
質問者

補足

情報ありがとうございます URL見ましたがどうも同じ現象のようです 現場でテスト中のため時間かけて調査するわけに行かないのですが_heap_alloc_dbgでエラーになってるのはまったく同じです また実際テスト環境下での手元PCではシュミレーションで6時間以上 動作させましたが現象は発生していません 実機テストできるのは月曜以降になるのですが Emptyを使うかCStringの使用をやめるかどちらかの対処を行ったもので テストして見ようかと思います(3時間かかるのが涙物です) 結果は改めて書き込ませていただきます

その他の回答 (1)

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

ざっとしか見てませんが とくにおかしいところはないですね ためしに時刻を文字列に変換している ところをすべて消してみては? 恐らくデバッグ用にしてるだけで ファイルに出力しているわけでは なさそうですし 以下、気になったところ ・charの配列を初期化していないのはいやですね char dir[_MAX_DIR] = {0}; という感じで初期化するべきです。 ・日付の比較を2箇所でやってますが  一つの関数にするべきです。 もし90日でなく120日とかにでもなると 直すところが2箇所 いやですね~ ・fnameを使いまわしているのが気になります フルパス用に一つ変数を用意するべきでは? いじょ

koi1234
質問者

お礼

ありがとうございます >とくにおかしいところはないですね ですよね >ためしに時刻を文字列に変換している >ところをすべて消してみては? それも考えたんですが根本の解決にはならないと考えたもので 今回はあえて原因調べる意図で質問させていただきました (デバッグ用に変換してるのはご想像道理です)

関連するQ&A