私はちょうど疑問に思っていました:の戻りsizeof()値の型が つまり、私が要求したとき、バイトまたはバイトですか?size_tsizeof(size_t)4malloc(someSize)someSizesomeSize*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のサイズ(バイト単位) を決定するためです。の戻り型はです。したがって、データ型のサイズ(バイト単位) を決定し、型データを返す
と言えます。sizeofsize_tsizeofsize_t