関数またはそのオブジェクトの任意のオブジェクトのアドレスを取得すると、そのオブジェクトの仮想アドレスまたは物理アドレスですか?関数ポインタ:物理アドレスまたは仮想アドレス
10
A
答えて
11
あなたは一般的にポインタについて質問していますか?
ほとんどのオペレーティングシステムでは、論理アドレスです。
オペレーティングシステムは、仮想メモリとページングメカニズムを使用してオペレーティングシステムを物理アドレスに変換する役割を担います。これはプログラムにとって透過的です。そういうわけで、間違ったプログラムが「境界線に当たった」とGPFが原因です。
一部の古いシステム(DOSなど)では、メモリが物理的になり、メモリの他の部分にあるものを上書きすることができます。
7
OSおよびコードの実行レベルによって異なります。
最新のOS上の通常のユーザーランドプログラムでは、仮想アドレスを取得します。
関連する問題
- 1. 仮想アドレスを物理アドレスに戻してマップします
- 2. MACアドレスがLinux上の物理アドレスか仮想アドレスかを判断します
- 3. 仮想アドレスと仮想アドレス空間の理解
- 4. キャッシュメモリを考慮した仮想アドレスから物理アドレスへの変換
- 5. Linuxのsk_buffでは、skb-> dataは物理アドレスか仮想アドレスですか?
- 6. は、仮想アドレス
- 7. GDB CallStack仮想または物理アドレスを指定しますか?
- 8. CPUキャッシュエントリに物理アドレスまたは仮想アドレスが含まれていますか?
- 9. MACアドレスなどの仮想マシンの仮想マシンから物理ホスト情報を取得します。
- 10. 複数のスレッドの仮想アドレス空間?
- 11. x86の仮想アドレス長
- 12. リンカスクリプトのロードと仮想アドレス
- 13. カーネル仮想アドレス変換
- 14. リモートIPアドレスと物理アドレスの違い
- 15. Linuxの物理アドレスを仮想アドレスに変換し、その内容を読み取ってください。
- 16. Android仮想アドレスの検索方法は?
- 17. 仮想アドレスはプロセス固有ですか?
- 18. GeoLocation UKへの物理アドレス
- 19. カーネル関数は異なる仮想アドレスを持つことができます
- 20. プロセスのアドレス空間と仮想メモリ
- 21. 仮想アドレスの割り当て方法
- 22. 仮想アドレスにイメージをロードする0X00000
- 23. このポインタとメンバ関数のアドレス
- 24. 仮想関数とポインタの使い方を理解する
- 25. 仮想関数オーバーライド仮想関数
- 26. ポインタとcoutのアドレス変数
- 27. 仮想関数は
- 28. 仮想URLからの物理URL
- 29. 仮想物理ラボと状態マシン
- 30. カスタマイズフック:仮想関数またはイベント?
私は次のプログラムを実行する場合:int main(){int(* p)(); それは0x80483c4のようなアドレスを与えています、それは物理的なアドレスだと思います、なぜこのような大きなアドレスでメインの仮想アドレスが始まりますか? 私はlinux.plzでこれを実行していますが、私が間違っているかどうかを明確にしていますか? – mawia
あなたは間違っています。これは仮想アドレスです。あなたのmain()関数が仮想アドレス0にロードされるとは誰も言われませんでした。実際、ELFバイナリ(Linuxで使用される)では、コードセグメントは仮想アドレス0x80482c0から始まります。 main()の前のコード)。仮想アドレス空間は頻繁に不連続であり、仮想アドレスは使用時にのみ割り当てられることに注意してください。あなたのプログラムが0x80482c0でロードされているからといって、そこと0x0の間のすべてが既に割り当てられているわけではありません。 –
あなたのプログラムがLinux環境下でどのようにメモリ内でどのように編成されているかを知りたい人は、こちらをお読みください。 –