【C言語】「size_t」とはなんぞや。

C言語で出てくる一つだけその実態がよく分からなかったsize_tという型。

まず、size_tを使うプログラムを書いてみる。
ちなみに、sizeof(size_t) = 8 という出力が得られる。
つまり、アロのMacにおいて「size_t」は8バイト分のメモリを使う。
↑プリプロセスだけを行い、その結果をwhat_is_size_t.i に出力する命令。
-E
: Stop after the preprocessing stage; do not run the compiler proper.
The output is in the form of preprocessed source code,
which is sent to the standard output.
-o file : Place the primary output in file "file".
This applies to whatever sort of output is being produced,
whether it be an executable file, an object file,
an assembler file or preprocessed C code.
file.i :  C source code that should not be preprocessed.
(Reference: https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html )
what_is_size_t.iファイルから文字列"size_t"が書かれている行を出力した。
The grep utility searches any given input files, selecting lines that match one or more patterns.
( Reference: man grep )
ちょっと行数が多くてごちゃごちゃしているので、"typedef"も含まれている行のみを出力↓
size_t は、__darwin_size_t の別名らしい。
そして、__darwin_size_t は、long unsigned int の別名らしい。
だから、アロのMacにおいて「size_t」は8バイト分のメモリを使うのか。
確認してみた。

どうやら、size_t型は、PC環境によって大きさが変化するみたいです。
アロのMacはApple M1 chipを搭載していて、 arm64というアーキテクチャらしいので、size_tは、8バイト = 64bit で定義されているようです。

いいなと思ったら応援しよう!