生命周期的概念,也就是生存期,仅仅适用于变量。
代码、常量、定义等等都是与程序共存亡的,他们的生命周期就是程序的生命周期。
静态分配:生命周期是整个程序执行周期,内存会一直存在,在main函数执行之前就创建,无论函数如何运行、如何调用,内存一直不会被回收,一直到程序结束才被程序回收。
自动分配:就是在栈上,系统自动回收清理,函数调用的时候,从定义的地方开始创建,函数结束的时候,系统自动进行回收。
动态分配:生存期就是从malloc开始,从free结束。
例12.1
以下函数 power() 用以计算 x^n。
1 #include <stdio.h> 2 int power(int, register int); 3 main() 4 { 5 int s; 6 s = power(5, 3); 7 printf("%d ", s); 8 } 9 int power(int x, register int n) 10 { 11 register int p = 1; 12 while (n) 13 { 14 p = p*x; 15 n--; 16 } 17 return p; 18 }
例12.2
有下列程序:
1 #include <stdio.h> 2 int sum; /* 定义全局变量 */ 3 void fun(void); 4 main() 5 { 6 sum = 10; 7 printf("* * main(1) * *:%d ", sum); 8 fun(); 9 printf("* * main(2) * *:%d ", sum); 10 } 11 void fun(void) 12 { 13 int sum; /* 定义同名局部变量 */ 14 sum = 20; 15 printf("* * fun * *:%d ", sum); 16 }
以上程序运行时输出结果如下:
* * main(1) * *:10
* * fun * *:20
* * main(2) * *:10
请按任意键继续. . .