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

简介: 在标准的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个单元长度。其他存储区的验证方法以之相识。

   

目录
相关文章
|
7天前
|
存储 编译器 C语言
C陷阱:数组越界遍历,不报错却出现死循环?从内存解析角度看数组与局部变量之“爱恨纠葛”
在代码练习中,通常会避免数组越界访问,但如果运行了这样的代码,可能会导致未定义行为,例如死循环。当循环遍历数组时,如果下标超出数组长度,程序可能会持续停留在循环体内。这种情况的发生与数组和局部变量(如循环变量)在内存中的布局有关。在某些编译器和环境下,数组和局部变量可能在栈上相邻存储,数组越界访问可能会修改到循环变量的值,导致循环条件始终满足,从而形成死循环。理解这种情况有助于我们更好地理解和预防这类编程错误。
18 0
|
17天前
3.默认值不一样【重点】 局部变量:没有默认值,如果要想使用,必须手动进行赋值 成员变量:如果没有赋值,会有默认值,规则和数组一样 4.内存的位置不一样(了解) 局部变量:位于栈内存 成员变量:位于堆内存 5生命周期不一样(了解)
3.默认值不一样【重点】 局部变量:没有默认值,如果要想使用,必须手动进行赋值 成员变量:如果没有赋值,会有默认值,规则和数组一样 4.内存的位置不一样(了解) 局部变量:位于栈内存 成员变量:位于堆内存 5生命周期不一样(了解)
18 0
|
存储 编译器 C++
临时确保局部变量使用的内存空间
临时确保局部变量使用的内存空间
46 0
|
Java 编译器
成员变量和局部变量在内存中的变化
今天我们从成员变量和局部变量来加深印象,彻底弄懂成员变量和局部变量在内存中的变化
218 2
成员变量和局部变量在内存中的变化
|
人工智能 Java
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
149 0
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
|
存储 程序员 C++
局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)
我们先来看内存中的几大区:  内存到底分几个区? 下面有几种网上的理解,我整理一下: 一:  1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
925 0
|
14天前
|
存储 算法 关系型数据库
实时计算 Flink版产品使用合集之在Flink Stream API中,可以在任务启动时初始化一些静态的参数并将其存储在内存中吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
93 4
|
15天前
|
存储 小程序 编译器
数据在内存中的存储(探索内存的秘密)
数据在内存中的存储(探索内存的秘密)
111 0
|
17天前
|
存储 监控 NoSQL
Redis处理大量数据主要依赖于其内存存储结构、高效的数据结构和算法,以及一系列的优化策略
【5月更文挑战第15天】Redis处理大量数据依赖内存存储、高效数据结构和优化策略。选择合适的数据结构、利用批量操作减少网络开销、控制批量大小、使用Redis Cluster进行分布式存储、优化内存使用及监控调优是关键。通过这些方法,Redis能有效处理大量数据并保持高性能。
38 0