動作環境
C++ Builder XE4
エラー
フォームの追加作業をしていた。
プログラム実行直後に以下のエラーが出るようになった。
モジュール '何がしのプログラム.exe'のアドレス0044392Eでアドレス000005B5に対する読み取り違反がおきました。'
上記のダイアログでOKを押すと、プログラムは実行する状態。
原因の特定
- プログラムを一時停止する
- 「検索 > 指定アドレスに移動」を選択する
- $を付けて、アドレスを入力する
- (例: $0044392E)
該当のcppファイルの行が表示される。
(スタックなどのアドレスの場合は、対応行が表示されない場合もある)
原因
FormCreate()時にメンバ変数の値を元にif文の処理をしていた。
フォームの数が少ないときは「偶然」うまく動いていたのだろう。
(メンバ変数の生成タイミングがたまたま良かった?)
FormCreate()時にメンバ変数の参照をやめるようにしたら、エラーは出なくなった。
(代わりにFormShow()での処理に変更した)