4

是否在声明以下结构或创建该结构的对象时保留了内存空间?

struct student
{
    int marks;
    float average;
};
4

2 回答 2

2

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

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

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

于 2013-04-22T01:43:56.183 回答
0

通常应该是在您创建定义时。由于您可以声明结构的实例而不定义它(可能在标头中使用 extern),因此除非定义实例,否则不会为实例使用空格。

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

于 2013-04-22T01:43:32.397 回答