如果我想动态地为int
对象分配内存,我可以这样做:
int *x = new int;
在这种情况下,我知道堆重新为4-bytes
对象的int
内存。
但是,如果我有一个user-defined
类(类型)并想动态分配内存,如下所示:
Car *c = new Car;
如何知道Car
对象在堆上保留所需的内存量?
感谢。
答案 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_t
或cstddef
stddef.h
类型
示例代码:
size_t size_in_bytes = sizeof(Car);