面试常客3---变量存储区划清界限

全局初始化变量:数据段

全局未初始化变量:数据段(BSS)

全局的、静态的(static)、初始化的变量:数据段

全局的、静态的、未初始化变量:数据段

全局的常量(const):代码段

局部初始化的变量:栈

局部未初始化变量:栈

局部的、静态的、初始化变量:数据段

局部的、静态的、未初始化变量:数据段

局部常量:栈

在C语言的程序中,对变量的使用还有以下几点需要注意:

1.    体中定义的变量通常是在栈上,不需要在程序中进行管理,由编绎器处理。

2.    用malloc,calloc,realloc等分配内存的函数所分配的内存空间在堆上,程序必须保证在使用free释放,否则会发生内存泄漏。

3.    所有函数体外定义的是全局变量,加了static后的变量不管是在函数内部或外部都放在全局区。

4.    使用const定义的变量将放于程序的只读数据区。

猜你喜欢

转载自blog.csdn.net/qq_34093974/article/details/85005982