内存的分配方式

五个区 :堆区、栈区、全局区、文字常量区、程序代码区

这五个区是ram中的。或者说,堆栈段、数据段、代码段

而rom中,没有堆区和栈区,只有数据段和代码段。

ram是在程序运行是的内存

rom是程序烧录的地方

Flash(闪存)、EEprom,都是rom

Flash容量大,是程序存储器,按照块擦除,用于存储BootLoader和程序代码

E方是数据存储器,容量小,可以一次擦除一个字节(在有些项目中要求字节对齐,有最小擦除单位,例如四个字节)

一般E方大小是1k 几k

ram分

静态sram。是目前最读写快的存储器,静态的意思是不掉电不丢失数据

动态dram。它比sram慢,但依然比任何rom读写快,需要定时的刷新操作。

有一种说法,程序分为三部分  .data .code(text).bss

data是初始化的全局变量和静态局部变量

bss是未初始化的全局变量和静态局部变量   bss不占用内存,因为static的局部变量、未初始化的全局变量,初始值为0

   而在存储时没必要去存储这么多的0 。在生成可执行文件.exe 时 记录所需内存的大小。链接器从.exe文件中的得到bss的大小

   紧随在数据段的后面,由操作系统清0(它的初始化值不占用.EXE的空间)

code 是二进制程序代码与一些文字常量

ROM

.data

.code(.text)

RAM

.heap

.stack

.data

.code(text)   代码是存储在rom中的,但是运行时仍需要copy到ram中去,有些编译器会自动识别

       常用的代码并将其存储在ram中。另外,代码也可以直接在rom上运行,不过速度会

        慢一些(具有sram接口的norflash)

.constdata         文字常量区说法不一,不太重要,存储const常量与文字常量(有说文字常量存储在.code中的)

编译的过程:

C语言随笔2: rom ram 及其运行的过程的更多相关文章

  1. Linux方案级ROM/RAM优化记录

    关键词:readelf.bloat-o-meter.graph-size.totalram_pages.reserved.meminfo.PSS.procrank.maps等等. 根据项目的需求,进行 ...

  2. nandflash,norflash,sdram,emmc,rom,ram等各种存储器识别

    老是被nandflash,norflash,sdram,emmc,rom,ram搞混,所以在这里总结一下,也为了更好的分清他们之间的关系,以至于别人问的时候不至于说不清. 我们不谈这些名次的由来,只说 ...

  3. 到底什么是nandflash,norflash,sdram,emmc,rom,ram【转】

    本文转载自:http://blog.sina.com.cn/s/blog_6dd8f2b70101le26.html 最近被nandflash,norflash,sdram,emmc,rom,ram搞 ...

  4. 链接脚本(Linker Script)应用实例(一)使用copy table将函数载入到RAM中运行

    将函数载入到RAM中运行需要以下三个步骤: (1)用编译器命令#pragma section "<section name>" <user functions&g ...

  5. ROM, RAM, NVRAM and Flash Memory on Cisco Routers

    当谈到路由器有多少内存以及哪些内存做什么时,有时人们会感到困惑. 您应该熟悉4个内存术语,在升级路由器的IOS之前应检查其中2个. 这些是以下内容: ROM:ROM代表只读存储器. 它存储System ...

  6. PHP语言学习之php-fpm 三种运行模式

    本文主要向大家介绍了PHP语言学习之php-fpm 三种运行模式,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. php-fpm配置 配置文件:php-fpm.conf 开启慢日志功能的 ...

  7. keil 编译器V6 定义函数在ram中运行-和在指定地址定义常量

    之前一直是用v5编译,编译速度慢,换成V6编译速度差不多快50% ,而且arm后期只维护v5编译器不在更新v5编译器.切换到V6编译器大势所趋,把之前v5且换到v6需要如下更改: 1. CMSIS包需 ...

  8. Java程序编译和运行的过程

    Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程. 如下图,Java程序从源文件创建到程序运行要经过两大步骤:1.源文件由编译器编译成字节码(ByteCode)  2 ...

  9. Java程序编译和运行的过程【转】

    转自:http://www.360doc.com/content/14/0218/23/9440338_353675002.shtml Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来 ...

随机推荐

  1. Windwos查看本地局域网内所有的ip方法

    Windows平台ping测试局域网所有在用IP .打开cmd命令窗口 .输入命令:,,) DO ping -w -n .%i //这个是自己局域网的ip地址前三位 查看自己ip信息的命令是ipcon ...

  2. JDK8-》 ⽅法引⽤与构造函数引⽤

    以前⽅法调⽤ 对象.⽅法名 或者 类名.⽅法名 jdk1.8提供了另外⼀种调⽤⽅式 ::   说明:⽅法引⽤是⼀种更简洁易懂的lambda表达式,操作符是双冒号::,⽤来直接访问类或者实例 已经存在的 ...

  3. C++-POJ1995-Raising Modulo Numbers[快速幂]

    #include <cstdio> typedef long long ll; int quick_pow(ll a,ll b,ll mod){ ll ans=; ))ans=(ans*a ...

  4. 记录 shell学习过程(1) 超简单的面向过程的2个shell 分区以及创建lvm

    分区 #!/usr/bin/env bash #fdisk /dev/sdb << EOF #n # # # #+600M #w #EOF 创建lvm pvcreate /dev/sdb ...

  5. windows下划分逻辑分区

    运行命令窗口后,我们输入命令"diskpart"回车! 然后我们在DISKPART>后面输入select disk 0 选择我们的硬盘,然后回车!当然如果你电脑上有好几块硬盘 ...

  6. vue里不同数据的循环,其中的数组对象

    用产品的属性数据说明 页面里显示效果为:要把产品的属性显示到页面上,产品属性为后台自主上传产品的属性,产品的属性不同,所以需要把属性和属性值显示到页面上 产品属性数据为: properties: &q ...

  7. python 日志模块 日志格式

    形如: formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s","%Y%b%d-%H: ...

  8. 数位dp(Balanced Numbers )

    题意:一个数,如果满足奇数的数字出现偶数次,偶数的数字出现奇数次, 就是符合的数,注比如:12313  就满足,因为1 3出现了偶数次.2出现了奇数次 思路,对于这道题,就是状态压缩加dp: 对于一个 ...

  9. P1582 倒水(贪心 + lowbbit)

    https://www.luogu.com.cn/problem/P1582 #include <bits/stdc++.h> using namespace std; #define i ...

  10. 【Python】计算圆的面积

    代码: r=29 area = 3.1415*r*r print(area) print("{:.2f}".format(area)) 结果: