在C中使用结构时分配内存的时间?在声明、定义或初始化时?

// Here is declaration
typedef struct MyStruct MyStruct;

// Here is definition
struct MyStruct {
    int a;
    int b;
};

int main(void) {
    //This declares and initializes variable of type MyStruct
    MyStruct ms = {.a=100, .b=120};
    return 0;
}

当我们实例化相应stuct类型的对象时是否保留内存,例如在上述情况下,在main函数中声明一个变量MyStruct ms。

最佳答案

示例中的MyStruct ms之类的局部变量是在堆栈上分配的。大多数编译器都会在prologue中为这些变量预留空间。即堆栈帧(在本例中为main函数)被构造时。
此外,这里还有一个关于堆栈内存的good article

关于c - 在C中使用结构时的内存分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54477168/

10-13 07:23