结构内存分配方式

时间:2016-12-08 15:30:59

标签: c memory-management struct

struct Books {
   char  title[50];
};

int main( ) {

   struct Books Book1;       
   struct Books Book2;      

   strcpy( Book1.title, "C Programming");

   strcpy( Book2.title, "Telecom Billing");

   printf( "Book 2 title : %s\n", Book2.title);

   printf( "Book 1 title : %s\n", Book1.title);
  }

在这里,一切都得到了正确执行,但我想问一下'struct'如何在不使用任何内存分配函数或任何指针的情况下为'book2'分配内存?

2 个答案:

答案 0 :(得分:3)

Book1Book2都是自动变量。它们在声明后自动分配,并在超出范围后自动解除分配。一旦函数返回,你必须非常小心不要返回任何指针。

在大多数现代架构中,它们将驻留在堆栈上(除非编译器将它们放在寄存器中)。分配本身非常便宜,因为它只涉及递增堆栈指针。

答案 1 :(得分:0)

您的Books结构分配,每次实例化一本书时(即当您在Book1函数中声明Book2main时)一个50个字符的数组(50可用于存储标题的字节。

要了解事物的运作方式,请尝试使用以下图书定义的相同程序

struct Books {
    char * title
}