2

私はちょうど疑問に思っていました:の戻りsizeof()値の型が つまり、私が要求したとき、バイトまたはバイトですか?size_tsizeof(size_t)4malloc(someSize)someSizesomeSize*4

私は ASM の宿題を 2 日間続けてきましたが、今はかなり混乱しています。ご協力いただきありがとうございます!

4

3 に答える 3

3

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)

于 2013-09-28T16:31:41.810 に答える
1

なぜ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_t
sizeofsize_t

于 2013-09-28T16:25:02.770 に答える