質問: 4 Bytes** int * を例に取ります。 大きさは4Byteなので 0x00000000 ~ 0xffffffff までのアドレスなら格納できることになるはずです。 以下のようなものを見つけました。 リンク内容 32bit OSなら、4GBまでなのでこれでも問題なさそうですが、64bitになるとアドレス空間が大きくなります。 例えば、メインメモリを32GB(8GB x 4スロット)積んでいたとします。 以前も質問をしたのですが、(リンク内容)1つのアプリケーションで、10億個の配列を使用した場合、12x10^9になるので、メモリは12GB搭載していないと動かない・・・ということになると思います。 これって、**0xffffffff を超えるようなアドレスの値を int * に入れ込むと、オーバーフローになりませんか??** これ、やばいような気がするんですが・・・実際はどうなっているのですか?? 教えてください。 [追記] 環境を追記しますね。 windows 64bit ファイル拡張子 .c です。 visual studioでコンパイルしてみました。
回答: 環境(32/64bit)によりポインタ型のサイズも異なります。 C/C++における整数型には気をつけよ