私はちょうど疑問に思っていました:の戻りsizeof()
値の型が つまり、私が要求したとき、バイトまたはバイトですか?size_t
sizeof(size_t)
4
malloc(someSize)
someSize
someSize*4
私は ASM の宿題を 2 日間続けてきましたが、今はかなり混乱しています。ご協力いただきありがとうございます!
1999 ISO C 標準 (C99) によると、size_t
少なくとも 16 ビットの符号なし整数型です (セクション 7.17 および 7.18.3 を参照)。
これ
size_t
は、stddef.h で定義されている C99 ISO/IEC 9899 標準など、いくつかの C/C++ 標準で定義されている符号なしデータ型です。このファイルは内部的に stddef を含むため、stdlib.h を含めることでさらにインポートできます。 .h.この型は、オブジェクトのサイズを表すために使用されます。サイズを取得または返すライブラリ関数は、サイズが の型であるか、戻り値の型を持っていることを期待しています
size_t
。さらに、最も頻繁に使用されるコンパイラベースの演算子 sizeof は、 と互換性のある定数値に評価される必要がありsize_t
ます。
これについては、次の投稿で説明しました: What is size_t in C?
これを行うmalloc(sizeof(int))
と、4 バイトのメモリが動的に割り当てられます。size_t
とを混同しないでくださいsizeof(size_t)
。
なぜ
sizeof(size_t)
私に4を与えるのですか?
size-t
のタイプのため、 はunsigned long int
あなたのマシンsizeof(size_t)
で のサイズを与えunsigned long int
ます (私のマシンでは - 32 ビット - それは 4 バイトを与えています)。
#include <stdio.h>
int main ()
{
printf("%d\n", sizeof(unsigned long int));
printf("%d\n", sizeof(size_t));
return 0;
}
someSize
バイトまたはバイトを要求しましたsomeSize*4
か?
答えは: です。someSize
これは、関数がデータ型sizeof
のサイズ(バイト単位) を決定するためです。の戻り型はです。したがって、データ型のサイズ(バイト単位) を決定し、型データを返す
と言えます。sizeof
size_t
sizeof
size_t