ページ 11

size_tの取れる値

Posted: 2012年1月14日(土) 13:03
by 史上最悪のデスペナ
調べても分からなかったので教えてください。
size_tはいくつまでの値を取れるのでしょう?
具体的には、
size_t strlen();
という関数はいくつまでの文字数なら取得できるのでしょうか?

Re: size_tの取れる値

Posted: 2012年1月14日(土) 13:05
by beatle
C++でよければ

コード:

#include <limits>
std::numeric_limits<size_t>::max()

Re: size_tの取れる値

Posted: 2012年1月14日(土) 13:09
by softya(ソフト屋)
size_tは環境依存ですので環境によって代わります。
VC++でも32bitコンパイルと64bitコンパイルで違うサイズです。

Re: size_tの取れる値

Posted: 2012年1月14日(土) 13:32
by 史上最悪のデスペナ
すごい初歩的な質問なのですが、
softya(ソフト屋) さんが書きました:size_tは環境依存ですので環境によって代わります。
とのことですが、
セーブロードのプログラムを組んで、size_tの最大値の違う環境でそのプログラムを動かしたとき、
読み込み量をsizeof(size_t)なんてやってると読み込まれる量が違ってきちゃうんでしょうか?

Re: size_tの取れる値

Posted: 2012年1月14日(土) 13:50
by softya(ソフト屋)
コンパイル時に決まりますので、同じコンパイラで同じモード(32/64)であれば大丈夫です。

Re: size_tの取れる値

Posted: 2012年1月14日(土) 13:50
by softya(ソフト屋)
コンパイル時に決まりますので、同じコンパイラで同じモード(32/64)であれば大丈夫です。
実行時はOSが互換を取ってくれます。

Re: size_tの取れる値

Posted: 2012年1月14日(土) 14:57
by 史上最悪のデスペナ
softya(ソフト屋) さんが書きました:実行時はOSが互換を取ってくれます。
OSって凄いですね(小学生並みの感想)

Re: size_tの取れる値

Posted: 2012年1月14日(土) 15:15
by softya(ソフト屋)
ことば足らずだったので、strlenの場合はコンパイラとライブラリ(OSは64bitライブラリと32bitライブラリが混じらないように管理)が保証します。ファイルなどOSが絡むライブラリ関数などはOSが保証します。