C ++ - 动态内存分配所需的内存

时间:2011-01-29 09:00:16

标签: c++ size heap new-operator dynamic-memory-allocation

如果我想动态地为int对象分配内存,我可以这样做:

int *x = new int;

在这种情况下,我知道堆重新为4-bytes对象的int内存。

但是,如果我有一个user-defined类(类型)并想动态分配内存,如下所示:

Car *c = new Car;

如何知道Car对象在堆上保留所需的内存量?

感谢。

4 个答案:

答案 0 :(得分:3)

那将是sizeof(Car)个字节。编译器会自动执行此操作,您无需执行任何特定操作。

答案 1 :(得分:2)

有关如何确定类对象大小的信息,请参阅this文章。它以编程方式使用:

size_t car_size = sizeof(Car);

答案 2 :(得分:2)

您正在寻找sizeof()。请注意,由于内存填充和/或对齐,此值可能会大于用户定义类型的预期值。

答案 3 :(得分:2)

您想使用sizeof运算符。 sizeof运算符以字节为单位返回类型的大小,并在编译时进行计算。这对malloc特别有用,因为malloc要求您指定需要分配的字节数。但是,您正在使用C ++,而new会自动为您执行此操作。

sizeof运算符返回size_tcstddef

中的stddef.h类型

示例代码:

size_t size_in_bytes = sizeof(Car);