首页 > 解决方案 > 在 C 中使用结构时的内存分配

问题描述

在 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;
}

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

标签: cstruct

解决方案


MyStruct ms像您的示例中的局部变量是在堆栈上分配的。大多数编译器会在它们的序言中为这些变量保留空间。即当main构建堆栈帧(在这种情况下为函数)时。

更多信息,这里是一篇关于堆栈内存的好文章。


推荐阅读