1

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

int *x = new int;

在这种情况下,我知道堆4-bytesint对象保留了内存。

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

Car *c = new Car;

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

谢谢。

4

4 回答 4

3

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

于 2011-01-29T09:02:31.147 回答
2

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

sizeof运算符返回在orsize_t中找到的类型cstddefstddef.h

示例代码:

size_t size_in_bytes = sizeof(Car);

于 2011-01-29T09:34:17.943 回答
2

有关如何确定类对象大小的信息,请参阅本文。您可以通过以下方式以编程方式使用它:

size_t car_size = sizeof(Car);
于 2011-01-29T09:03:41.410 回答
2

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

于 2011-01-29T09:04:07.160 回答