メモリアドレスとは何ですか?
コンピューターに関連して、メモリアドレスは、ストレージメディア内のデータムの単一要素を参照する数値です。コンピューターメモリの位置は、コンピューターのランダムアクセスメモリ(RAM)の内側、ハードドライブまたはファイルシステム、または使用可能なシステムメモリが不十分な場合に仮想メモリの形式として使用される一時的なストレージデバイスにあります。メモリの位置のサイズは、コンピューターシステムまたはデバイスのアーキテクチャに依存しますが、通常、8ビットバイトから64ビット整数までの範囲です。メモリにアクセスして管理するために使用されるさまざまな方法があり、その多くはメモリ管理ユニット(MMU)として知られるハードウェアを使用していますが、他のメモリはソフトウェアに完全に依存しています。すべてのシステムには、アクセスできる最大メモリアドレスに制限があります。これは通常、システムで利用可能な最大の整数タイプの最大サイズです。
最も一般的なタイプのメモリアドレスは、コンピューターシステムの内部の場所を指します。動的に変更されたデータへの迅速なアクセスを提供するRAMメモリ。コンピューターメモリ内に保存されている実際の情報は、変更または表示されている数値やテキストドキュメントなどの生データから、実行される特定のメモリアドレスに保存されている実際のプログラムコードまでの範囲です。プログラムが実行を完了した場合、使用されていたメモリアドレス情報は、次のプログラムが使用されるためにRAMが解放されると無効になります。
テクノロジーが進行するにつれて、「メモリアドレス」という用語は変更され、2011年現在、実際の物理アドレスを必ずしも指すとは限りません。代わりに、コンピューターまたはデバイスのMMUによって解決できる場所を参照できます。これは、MMUがプログラマーとプログラム間のレベルの抽象化を提供し、代わりにオペレーティングシステムまたは他のハードウェアが適切なメモリの動きと割り当てを管理できるようにすることを意味します。仲介メモリアドレスの翻訳は、プログラマが新しいメモリスキームを学習したり、さまざまなタイプのコンピューターアーキテクチャのソースコードを変更する必要がないことを意味します。
多くのコンピューターシステムおよびオペレーティングシステムでは、メモリアドレスが常にメモリ内のデータやコードを指すとは限りません。アドレスがモニターなどの周辺機器やソケットなどの仮想デバイスの入力または出力ポイントを参照できるスキームがあります。これらの場合、特定のアドレスに配置される情報は、実際にそれが表すハードウェアデバイスに送信されます。これは、プリンターなどのデバイスにアクセスするための非常に効率的な方法になる可能性がありますが、プログラムをデバッグするときに深刻な脆弱性や混乱につながる可能性もあります。