実行時に「不正な処理」?

[戻る]
ぱうんど 2002/12/20(金) 16:51:28
作ったプログラムをビルドして、問題なく実行ファイルができたのですが、
それをいざ実行しようとすると「このプログラムは不正な処理〜」という
おなじみの文章がでてきます。それで詳細を見ると、
「xxx.exeのページ違反です(xxx:実行ファイル名)」というように表示されていて、
プログラムの実行ができません…
これはいったい何がどうなってこうなるのでしょうか?
ちなみに、実行はConsole Appricationの形式(つまりMS-DOS)で、
同じフォルダにある別のプロジェクトは問題なく起動していました。

tib 2002/12/20(金) 17:01:15
「他のプログラムは動くのに、このプログラムだけ動かない」とか「このプログラムは他
のPCへ持っていっても同じエラーが出る」というのであれば「そのプログラムに何らかの
原因がある」と見るのが妥当でしょう。

ビルドが通ったくらいで「問題なく動くプログラムが完成した」と思ってはいけません。
「第一段階をクリアした」程度に捉えましょう。コンパイルエラーとランタイムエラーの
両方をクリアして初めて「問題なく...」といえるのです。

残念ながらこの情報だけでは原因を推測するのは困難です。もう少し詳しい情報はありま
せんか? デバッガから何回か実行したら必ずこの関数でエラーが出るとか、その関数はな
んという関数から呼ばれているとか、エラーが出るときに参照している変数はこれとこれ
でそれぞれの値はこうなっているとか...。

joan 2002/12/20(金) 17:05:04
おそらくどこかの変数が初期化されていないのだと思います。
デバックモード時は変数の初期値を代入しなくても 0xcccccccc とか
いう値が入っているので初期化してなくてもプログラムが走ってしま
うことがあります。すべての変数の初期値を見直してみてください。

# Virual C++6 の場合ですが。ほかの開発環境はわかりません。

. 2002/12/20(金) 17:06:23
 初期化していないポインタ変数でメモリアクセスしているとか、配列を確保して、データをセ
ットしている時に与えているインデックスが配列のサイズ以上をさしているとか?

想像だけならいくらでも・・・

デバッガで追ってエラーが出ている所を調べたら?

 自分が組んだリストならメモリ確保やアクセスしている所は分かっているだろうから片っ端か
ら調べるというのもあり。

まぁ、デバッガで追った方が早いか。

2002/12/20(金) 17:06:35
>これはいったい何がどうなってこうなるのでしょうか?

ページ違反という事はとんでもないところ(番地=アドレス)にアクセス(読み書き)しよう
としたのでしょう
  あなたのプログラムのことはソースや動作が追えない--あなた以外の--他人には判りません
  プログラムのどこで障害が発生しているのか見つけることが先決でしょう
  デバッガーで追いかけることは出来ないのでしょうか?

古いスレッドには追加発言できません。