掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ポインタに代入した時のアドレス (ID:206)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
すみません。返事が大変遅くなってしまいました。 皆様回答ありがとうございました。 Delphiの長い文字列というのは足し算が出来て便利なのですが、内部では複雑なことが行われているんですね。 書き込みエラーが出ないということですが、こちらでは以下のようなエラーが出ます。 「モジュール'TEST.EXE'のアドレス 00462DC5 でアドレス 00462FC9 に対する書き込み違反が起きました。」 最初のうちはこちらでもエラーは出なかったのですが、いろいろコードをいじっているうちに出るようになってしまいました。 ただし、Delphiの開発環境中で実行してエラーが出なくても、単独で exe を実行すると必ずエラーが出ます。 Delphi開発環境中ではメモリの使用状況によってエラーが出たり出なかったりするのかも知れません。 エラーが発生するアドレスを CPUウィンドウで確認したところ、プログラムコード中に埋め込まれた文字列「abcdefghj」を書き換えるところで「書き込み違反」になっていることが分かりました。 プログラムコード中に埋め込まれた文字列を書き換える場合は、その文字列をヒープ領域にコピーするのがDelphiの文字列の仕様なんですね。 プログラムコードは書き換えられないようにプロテクトされているということでしょうか? ポインタを使用して文字列を書き換える場合はそのプロテクトされたメモリ領域を強引に書き換えることになってしまうので、エラーが出ると考えていいのでしょうか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.