内存的分配方式

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

这五个区是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. mybatis一对多 多对一 多对多

    https://blog.csdn.net/AdminGuan/article/details/98952484   Mybatis的Mapper该如何编写多对一? 很简单,就是在resultMap标 ...

  2. [Java IO]05_JSON操作

    目录 6.1 JSON 知识背景  6.1.1 JSON 简介  6.1.2 JSON 语法  6.1.3 JSON 的数据结构6.2 Java 中操作 JSON 数据  6.2.1 Jar包下载   ...

  3. Python常用的类库、对应的方法和属性

    Python常用的类库.对应的方法和属性

  4. style.display = "inline或inline";和style.display = "";的区别

    function a(){ if($('#b').attr('checked')){ $('.c').css("display",""); //"di ...

  5. TD - setAttribute()

    添加指定的属性,并为其赋指定的值 this.sltLevelType.setAttribute("height", "100px");

  6. Java传(2)

    __________________________夜夜都是魂牵梦绕. 题目: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月有生一对兔子,假如兔子都不死,问每个月的兔子 ...

  7. codeforces Codeforces Round #597 (Div. 2) B. Restricted RPS 暴力模拟

    #include <bits/stdc++.h> using namespace std; typedef long long ll; ]; ]; int main() { int t; ...

  8. totensor方法和normalize方法 数值映射和归一化

    totensor方法和normalize方法 数值映射和归一化 待办 ToTensor是指把PIL.Image(RGB) 或者numpy.ndarray(H x W x C) 从0到255的值映射到0 ...

  9. GoAhead WebServer 架构

    https://blog.csdn.net/jungsagacity/article/details/7307012

  10. js对象冒充实现的继承

    //人类 function Person(name) { this.name = name; this.showName = function () { console.log("my na ...