ID非公開

2022/7/1 17:47

66回答

C言語などのプログラミングで言われている、ポインタにメモリのアドレスを格納するときの、メモリとはRAM(random access memory)の事ですか?

C言語関連140閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

ThanksImg質問者からのお礼コメント

大変参考になりました。回答ありがとうございました。

お礼日時:7/4 13:04

その他の回答(5件)

0

そもそもの話、ポインタ変数に代入するのは「メモリ空間のアドレス」であって「メモリのアドレス」ではありません。 そのアドレスに「何があるのか?」ということについてC言語は一切関与しないので「そこに何があるのか?」はプログラマ自身が常に把握していなければならない=こんな疑問は生まれない、ということになります。 Intel系のCPUでは、メモリ空間にはRAMかROM若しくは「何も繋がっていない」のいずれかになりますが、『メモリマップドI/O』方式を採用するCPUではさらに「I/Oポート」もメモリ空間に接続されています。 またかつてのパーソナルコンピュータX1シリーズにおいては、Z80CPUの非公式な仕様を利用してI/Oポートにメモリ(グラフィックVRAM)を接続するという変態チックな試みが行われていました。

0

今のOSでは空きメモリ量よりも多くのメモリが必要とするプログラムが動作可能になっている。これを実現させているのが仮想メモリであり、仮想メモリはHDD(SSDでも可)に割り当てる。 さらに近年ではグラフィックオード上にもメモリが搭載されている。

1

まぁ、本来はメモリのつもりで話を始めたかもしれないけれど、実際にはメモリ空間に配置されるものであればなんでも。RAMでも、ROMでも、IOデバイスでも、なんでも。なにも配置されていないアドレスだって読み書きの操作だけはできるかも。空振りするけど。 あぁ、アクセス例外が起こるからとか言い出す人もいるかも知れないけれど、それはC言語の働きではなくてOSレベルのソフトウェアやCPU周りのハードウェアがやっちゃうことだから、勘違いしないように。

1人がナイス!しています

0

(ID非公開) RAMとは限らない、またメモリとも限らない アドレスを使用して読み書きするデバイスの全てが対象になりうる。

ID非公開

質問者2022/7/1 18:43

回答ありがとうございます。 アドレスを使用して読み書きするデバイスとはマイコンとかですか? もう少し詳しく教えて頂けると幸いです。