为struct保留内存空间?

时间:2013-04-22 01:34:47

标签: c++ memory struct

是否在后续struct的声明中保留了内存空间,或者在创建该结构的对象时保留了内存空间?

struct student
{
    int marks;
    float average;
};

2 个答案:

答案 0 :(得分:0)

通常应该在创建定义时使用。由于您可以在不定义结构的情况下声明结构的实例(可能在标题中使用extern),因此除非定义了实例,否则不会将空间用于实例。

但是,如果实际上没有使用它们,编译器可以选择将对象从程序中剥离出来。有时编译器可能过于热心并剥离根本没有引用的对象,但实际上执行重要的操作,例如某种注册。

答案 1 :(得分:0)

当您按照您的方式声明struct时,没有为结构分配内存。但是,您可以声明struct 立即定义该类型的变量,如下所示:

struct student
{
    int marks;
    float average;
} var_name; // Reserves the memory in the global/static space

您还可以使用new在自动空间(局部变量)或动态空间中定义变量。