ポインタサイズはそのポインタの指す型に依らず同じです。何バイトになるかどうかは環境に依ります。 Virtualbox上のcenntos、コンパイルにはgccを使っています。 64bitのCentOSならおそらく64bitのgccが入っていると思うので、デフォルトだと8バイトですね。 の unsigned int pos = s.find (src); の部分ですが、32bit 環境では問題は発生しませんが、64bit 環境ではポインタ型のサイズが異なって正常動作しなくなります。正しくは、STL(Standard Template Library) の仕様通り、size_t で受け取る必要があって、
ポインタをint型やlong型変数に代入しない ... List2に型のデータサイズとデータモデルを表示するプログラムの例を示します。 ... #define _64BIT 8
32bit環境や一部の64bit環境(LLP64(Win64))ではlong/unsigned long型の最大値と最小値がint/unsigned int型と同等のサイズになるため注意してください。 OS環境別のサイズについては「# データモデル別 データサイズ対応表」が参考になります。 long long型のサイズについて そもそも、ポインタのサイズが32ビットのままなら64ビットに拡張される意味がありませんし、これは当然といえば当然のことかもしれません 32bitと64bitというのは、扱えるメモリ空間が違うわけです。64bitのパソコンにすると、より多くのメモリを積むことが出来ると言うことは、聞いたことがあるでしょう。ポインタと言うのは、そもそもメモリの番地を格納する変数です。 32bitマシンで使っていたソースを、64bit化する際に気をつけたこと、困った経験などがありましたら、教えて下さい。どういったことが問題になるのか、勘所がわからないので、勉強の為に質問させていただきました。具体例なんかあると嬉し void はポインタのため、32bit環境ではvoidは32bitであり、intも基本的には32bitで同じサイズのため、 32bit環境に限れば問題なくコンパイル、実行が出来ます。 (エラーになる場合は、g++ test.cpp -m32で32bitのみのコンパイルが出来ます)