在数据段中分配的变量,统统拥有静态存储期,因此也都被称为静态变量。这里静态的含义,指的是这些变量的不会因为程序的运行而发生临时性的分配和释放,它们的生命周期是恒定的,跟整个程序一致。
静态变量包含:
示例代码:
- int g1; // 静态存储期
- static int g2; // 静态存储期
-
- int main()
- {
- int a, b;
- static int c; // 静态存储期
- }
在堆中分配的变量,统统拥有自定义存储期,也就是说这些变量的分配和释放,都是由开发者自己决定的。由于堆内存拥有高度自治权,因此堆是程序开发中用得最多的一片区域。
- int *p = malloc(sizeof(int)); // 申请1块大小为 sizeof(int) 的堆内存
- bzero(p, sizeof(int)); // 将刚申请的堆内存清零
-
- *p = 100; // 将整型数据 100 放入堆内存中
- free(p); // 释放堆内存
-
- // 申请3块连续的大小为 sizeof(double) 的堆内存
- double *k = calloc(3, sizeof(double));
-
- k[0] = 0.618;
- k[1] = 2.718;
- k[2] = 3.142;
- free(k); // 释放堆内存