-PR-
締切り
済み

アプリケーションエラー

  • 困ってます
  • 質問No.65855
  • 閲覧数448
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 25% (1/4)

"0x00402108"の命令が"0x00000000"のメモリを参照しました。メモリが"written"になることはできませんでした。
という、アプリケーションエラーが出るのですが、どのような問題があるのでしょうか?
環境は、win2000です。VC++6.0SE
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

最初の 0x00402108 は、実行しているプログラムのアドレスです。 0x00000000 のメモリを参照しました... のくだりは、アドレスが 0 に 書き込みをしようとしたということです。 例えば、(極端な例ですが)こんなことをすると同じエラーが出ます。 int main() {   int* data;   data = (int*)0;   *data = 1; ...続きを読む
最初の 0x00402108 は、実行しているプログラムのアドレスです。
0x00000000 のメモリを参照しました... のくだりは、アドレスが 0 に
書き込みをしようとしたということです。

例えば、(極端な例ですが)こんなことをすると同じエラーが出ます。

int main()
{
  int* data;
  data = (int*)0;
  *data = 1;

  return 0;
}

ポインタ変数の初期化をしていない場合にこういうエラーが出ます。

多分、Debug でビルドしたプログラムなのだと思います。Debug で
ビルドした場合には、自動変数は0で初期化されますので、
明示的にポインタ変数の初期化(アドレスの指定)をしないと、
こういうはめになります。


  • 回答No.2
レベル9

ベストアンサー率 30% (25/81)

#1の最終段ですが、Debugビルドすると、ローカル変数(正確にはauto変数)は0xCCCCCCCCに初期化されます。Releaseビルドすると初期化されず初期値は不定です。 #alloc系/newや何かの情報を返す関数の復帰値を確認していないとか? void func() { char *p = (char *)malloc(4); // エラーになってNULL(=0)を返す str ...続きを読む
#1の最終段ですが、Debugビルドすると、ローカル変数(正確にはauto変数)は0xCCCCCCCCに初期化されます。Releaseビルドすると初期化されず初期値は不定です。

#alloc系/newや何かの情報を返す関数の復帰値を確認していないとか?

void func()
{
char *p = (char *)malloc(4); // エラーになってNULL(=0)を返す
strcpy(p, "ABC"); // この先でエラーが起きる
}
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ