-PR-
解決済み

VC++6.0へバージョンアップしたら5.0で作ったアプリがエラーになる

  • 困ってます
  • 質問No.75799
  • 閲覧数205
  • ありがとう数8
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 100% (43/43)

VC++を5.0から6.0にバージョンアップしたのですが。
これで5.0で作ったプロジェクトをビルドしなおしたら、
実行時にアプリケーションエラーになってしまいました。
不正な処理-->ページ違反ですというやつです。
コンパイル時はエラーは何も出ないし、さらにデバックビルド
だとちゃんと動き、リリースの時だけこの現象が起きてしまうので、
解析が困難で困っています。

こういった現象に何か心当たりがある方アドバイスをお願いいたします。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.5
レベル12

ベストアンサー率 75% (398/526)

VC5のDebug,Releaseビルド、VC6のDebugビルドではOKなんですよね。

 Debugビルドでは、Releaseビルドでは行わない初期化やエラーチェックルーチンの組込みなどを行ってくれます。
 この機能のおかげでバグを拾ってもらっているのでしょう。

 VC5から6へVerアップしたことで出るようになったということは、Cの基本機能などの潜在バグなどではないでしょう。
 VC6は持ってないのでこれは推測なのですが、VC5ではANSI C++が固まっていなかったためにMicrosoft独自の仕様だった部分を、6になり準拠させたために発生したものかもしれません。可能性は薄いですが。

 「ページ違反」というのは、メモリアクセス絡みで起こるものなので、自作のクラスライブラリなどを作成しているのなら、デストラクタ周りなどを調べてみてください。その際、各クラスオブジェクトのメモリマップなどを作成して、細かい点までチェックするようにしてください。
お礼コメント
yasutaka

お礼率 100% (43/43)

VC6.0の方が5.0よりシビアな部分があるみたいですね。
もう少しがんばって調べてみます。
投稿日時 - 2001-05-15 19:01:29
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル3

ベストアンサー率 0% (0/2)

MSのページです。関係あるかな~。
お礼コメント
yasutaka

お礼率 100% (43/43)

6.0のほうが5.0よりシビアな部分があるみたいですね。
メモリの開放ってnewとかmaroc使わなくてもしないといけないのでしょうか?
投稿日時 - 2001-05-15 19:15:18


  • 回答No.2
レベル12

ベストアンサー率 40% (201/496)

VC4からVC5にしたときにこういう現象にあったことがあります。最初はコンパイラを疑ったのですが、結果的には自分のプログラムのバグでした。
怪しいところにメッセージダイアログを埋め込んでみたり、トレースをログファイルに出力するなどして、根気よくデバッグするしかないでしょう。
お礼コメント
yasutaka

お礼率 100% (43/43)

うーん MessageBoxいれたりコメントアウトしたりやってみてはいるんですが、
強制終了になる場所が変わったり、エラーが出なくても出力データがが化けてたり、すごく不安定な動作をしています。
トレースをログファイルに出力・・の意味(やり方)が分かりません。
どんな事をするのでしょう。(すいません素人で・・・)
投稿日時 - 2001-05-15 12:00:49
  • 回答No.3
レベル8

ベストアンサー率 51% (21/41)

変数の初期化ミス、リソースリークなどが考えられます。

デバッグツールを使えばかなり簡単に見つかります。
下記URL参照
お礼コメント
yasutaka

お礼率 100% (43/43)

すいませんリソースリークとはどういった状態でしょうか?
知識不足でほんとに申し訳ないです。
デバックツールは持っていません。
投稿日時 - 2001-05-15 19:27:23
  • 回答No.4
レベル10

ベストアンサー率 31% (47/149)

char szBuff[3];
というふうに宣言して、
sprintf(szBuff,"%s","abcde");
なんて感じで、別で宣言した領域を破壊してるかも。

この場合も、コンパイルエラーは出ません。
お礼コメント
yasutaka

お礼率 100% (43/43)

これは良くやってしまうんです。
でも今回は探してみたんですが、そうじゃないみたいです。
(自信が無いけど・・・)
もう少しがんばってデバックしてみます。
投稿日時 - 2001-05-15 19:19:20
  • 回答No.6
レベル12

ベストアンサー率 45% (210/459)

こんにちは。itohhといいます。

他のみなさんが回答を寄せているように、AfxMessageBox関数でどこまで動いているか確認されては如何ですか?
自作の関数内のスタートとエンドに入れていくとわかりやすいですよ。

ただ、これから作成するプログラムでは、エラー処理を関数ごとにコーディングすることをお奨めします。
エラー処理を入れておくと予期しないエラーの解析に短時間で対処できるようになります。
例。
try {

// 行いたい処理

}
catch(...) {

// エラー処理(ここで、エラーログをファイルなどに出力すると良い)

}

詳細はMSDNライブラリで確認してください。
お礼コメント
yasutaka

お礼率 100% (43/43)

うーん MessageBoxいれたりコメントアウトしたりやってみてはいるんですが、
強制終了になる場所が変わったり、エラーが出なくても出力データがが化けてたり、すごく不安定な動作をしています。
MessageBoxを入れただけで動作が変化する事もありました。
ストラクチャの配列をポインタを使って操作しているのでその辺が怪しいという気はするんですが・・・もう少しがんばってみます。
投稿日時 - 2001-05-15 12:42:22
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ