美文网首页
C语言数据在内存中的存储

C语言数据在内存中的存储

作者: 凌云C语言游戏开发 | 来源:发表于2018-05-16 21:57 被阅读0次

一个由C/C++编译的程序占用的内存分为以下几个部分:

1、栈区(stack)— 由编译器自动分配释放 ,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。

其操作方式类似于数据结构中的栈。(内存分配时,与堆相向而生,因此申请内存是有限的,运用不当,会出现栈溢出)

2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。分配方式类似于链表。

3、全局区(静态区)(static)—存放全局变量、静态数据、常量。程序结束后由系统释放。4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放。

5、程序代码区—存放函数体(类成员函数和全局函数)的二进制代码。

内存分配有以下三种方式:

1.从静态存储区域分配

内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。

2.在栈上创建(地址从大到小

在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(栈上的变量都具有临时变量的特性)

3.从堆上分配(地址从小到大)

亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。

动态内存的生存期由程序员决定,使用非常灵活,但如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,

频繁地分配和释放不同大小的堆空间将会产生堆内存碎块。(在程序关闭(运行结束)后,内存泄漏消失)

小编推荐一个学C语言/C++的学习裙六六六二九五四九八 邀请编码【凌云】无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

相关文章

  • python数据存储机制

    在其他语言中,例如C/C++语言中在存储一个数据之前,都需要在内存中给这个数据开辟一个固定的内存空间,并给这个类型...

  • 第一章:Redis初识

    Redis特性 速度快 数据存储在(内存)中 (主要原因) C语言编写(50000行) 单线程模型...

  • 基本数据格式在内存中存储的格式

    1. 基本数据格式在内存中存储的格式[1] 1.1 浮点数类型(Float&Double) C语言和C#语言中,对...

  • C语言数据在内存中的存储

    一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放 ,存放为运...

  • C 内存管理

    1、存储类别 C 语言提供了多个不同的存储类别在内存中存储数据。要理解这些存储类别,我们先来理解一些概念。 1.1...

  • C语言玉女心经篇—变量与数据类型

    3.1 大话C语言变量和数据类型 在《数据在内存中的存储》一节中讲到:●计算机要处理的数据(诸如数字、文字、符号、...

  • Day02Python变量

    1、什么是变量 声明变量,就是在内存中开辟在空间存储数据。就是程序在内存中存储数据的容器 2、怎么声明变量 C/J...

  • 3. 数组(数据结构)

    数组的定义 数组是存储在连续内存位置的相似类型数据项的集合。 数组是C语言中的派生数据类型,它可存储原始类型的数据...

  • C++ 中的变量

    C++ 中的变量内存数据类型 C++ 数据类型 使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的...

  • C语言06- 内存管理

    14:内存管理 14.1:内存分类与寻址 14.1.1:内存分类 在C程序中,能存放数据的地方包括: 静态区:存储...

网友评论

      本文标题:C语言数据在内存中的存储

      本文链接:https://www.haomeiwen.com/subject/fjgmdftx.html