如果我想动态地为一个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
运算符返回在orsize_t
中找到的类型cstddef
stddef.h
示例代码:
size_t size_in_bytes = sizeof(Car);
有关如何确定类对象大小的信息,请参阅本文。您可以通过以下方式以编程方式使用它:
size_t car_size = sizeof(Car);
你正在寻找sizeof()
. 请注意,由于内存填充和/或对齐,此值可能大于用户定义类型的预期值。