全局、静态、局部变量的内存分配

简介: 在标准的C中,变量大概可以分为全局变量(用extern修饰),静态变量(用static修饰),局部变量三中类型.      在内存中用于存储变量的空间也可以分为堆区、栈区、全局区(静态区)。

在标准的C,变量大概可以分为全局变量(extern修饰),静态变量(static修饰),局部变量三中类型.

     在内存中用于存储变量的空间也可以分为堆区、栈区、全局区(静态区)。其中堆区:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,一般存放malloc()函数申请请的变量空间;栈区:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等;全局区(静态区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。

      验证:静态变量与全局变量都存放在同一片区域当中

#include<iostream.h>

/* 全局变量 */

extern int iTx = 1;

void main()

{

       /* 静态变量 */

       static int iSTx = 2;

       /* 局部变量 */

       int ijx = 3;

       cout<< &iTx <<endl;

       cout<< &iSTx <<endl;

       cout<< &ijx <<endl;

}

输出的结果:

0x0042AD50

0x0042AD54

0x0012FF7C

从这里可以看出iSTxiTx是存放在同一片连续的内存空间当中,相差4个单元长度。其他存储区的验证方法以之相识。

   

目录
相关文章
|
24天前
|
存储 C语言 C++
C++栈区、堆区、全局静态区、代码区的介绍
C++栈区、堆区、全局静态区、代码区的介绍
|
8月前
|
存储 编译器 C++
【C/C++】 静态内存分配与动态内存分配
C/C++ 中静态内存分配与动态内存分配相关内容,区别与比较
192 0
|
存储 C语言 Perl
西门子S7-1200的变量如何使用?什么是局部变量和全局变量?临时变量和静态变量有什么区别?
今天给大家讲一下什么是局部变量、全局变量、临时变量、静态变量,这些变量都有什么区别,以及在西门子S7-1200中这些变量如何来使用。
西门子S7-1200的变量如何使用?什么是局部变量和全局变量?临时变量和静态变量有什么区别?
|
Java 编译器
成员变量和局部变量在内存中的变化
今天我们从成员变量和局部变量来加深印象,彻底弄懂成员变量和局部变量在内存中的变化
212 2
成员变量和局部变量在内存中的变化
|
人工智能 Java
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
146 0
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
|
C++ 机器学习/深度学习