int
オブジェクトにメモリを動的に割り当てたい場合は、次のようにします。
int *x = new int;
この場合、ヒープがオブジェクト4-bytes
のメモリを確保していることがわかりint
ます。
しかし、user-defined
クラス (型) があり、メモリを動的に割り当てたい場合は、次のようにします。
Car *c = new Car;
Car
オブジェクトのヒープに予約する必要があるメモリの量を知るにはどうすればよいですか?
ありがとう。
int
オブジェクトにメモリを動的に割り当てたい場合は、次のようにします。
int *x = new int;
この場合、ヒープがオブジェクト4-bytes
のメモリを確保していることがわかりint
ます。
しかし、user-defined
クラス (型) があり、メモリを動的に割り当てたい場合は、次のようにします。
Car *c = new Car;
Car
オブジェクトのヒープに予約する必要があるメモリの量を知るにはどうすればよいですか?
ありがとう。
それがsizeof(Car)
バイトになります。これはコンパイラが自動的に行うため、特に何もする必要はありません。
sizeof
演算子を使用したい。sizeof 演算子は、型のサイズをバイト単位で返し、コンパイル時に評価されます。malloc
これは、malloc では割り当てる必要のあるバイト数を指定する必要があるため、特に便利です。ただし、C++ を使用new
しているため、これは自動的に行われます。
sizeof
演算子は、またはで見つかった型を返しsize_t
ますcstddef
stddef.h
コード例:
size_t size_in_bytes = sizeof(Car);
クラス オブジェクトのサイズを決定する方法については、この記事を参照してください。以下を使用してプログラムで利用できます。
size_t car_size = sizeof(Car);
を探していsizeof()
ます。この値は、メモリのパディングやアラインメントのために、ユーザー定義型の予想よりも大きくなる可能性があることに注意してください。