为结构体保留内存空间时

When memory space is reserved for struct?

本文关键字:空间 保留内存 结构体      更新时间:2023-10-16

内存空间是保留在下面的结构体声明或当我们创建该结构体的对象?

struct student
{
    int marks;
    float average;
};

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

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

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

通常在创建定义时应该是这样的。因为你可以声明一个结构体的实例而不定义它(可能在头文件中使用extern),除非实例被定义,否则不会为实例使用空格。

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