首页  > 限时BOSS > 程序是怎么运行起来的?

程序是怎么运行起来的?

限时BOSS 2025-11-20 04:37:04 9784

目录Reference

一个程序能运行起来,需要如下几个步骤:

用代码编译出来的执行包;

运行执行包的时候,执行包会自动向系统申请内存,这个内存类似数据库,用来存储变量,当然还需要调用计算指令。

系统不会预先分配固定内存,而是根据程序需求动态调整。

下面就模拟一个程序运行起来的,需要不同类型的功能区来存储不同的变量,这个功能区可以想象成不同的房间,一个程序都需要住进哪几个房间?这些房间都提供了什么服务?

高地址 +------------------+

| 环境变量区 | ← 环境变量(房间的空气)

+------------------+

| 命令行参数区 | ← 命令行参数(入户门)

+------------------+

| 栈区 | ← 函数调用,局部变量

| |

+------------------+

| ↓↓↓ | ← 栈向下增长

| |

+------------------+

| 自由 | ← 未使用的内存空间

| |

+------------------+

| ↑↑↑ | ← 堆向上增长

| |

+------------------+

| 堆区 | ← 动态分配内存

| |

+------------------+

| 未初始化数据段 | ← 未初始化的全局变量

| (BSS段) |

+------------------+

| 已初始化数据段 | ← 已初始化的全局变量

| (Data段) |

+------------------+

低地址 | 代码段 | ← 程序的指令代码

+------------------+

每个内存房间都有特定的功能,当然也会有特定的限制。那为什么要去了解内存空间?

为什么要了解内存布局?

想象一下,你搬进了一栋新房子,却不知道卧室、厨房、卫生间、杂物室....分别在哪儿,你每天起床找个马桶都跟玩密室逃脱似的,是不是很崩溃?

计算机的内存就像你的"数字房子",不了解它的布局,代码写着写着就容易"走错房间",结果就是 —— 程序崩溃,电脑蓝屏,领导白眼...

理解这些机制有助于优化程序性能和稳定性。

和数据库的区别?

上文说了它和数据库很像,只不过数据库是持久存储,内存是临时存储,只要关机了,就什么都没有了。

当然还有功能上的区别,数据库的库和表和字段是根据业务去设计出来的。内存上的功能分区都是前人规定好了,后人默认遵守使用。

Reference

https://www.cnblogs.com/xiaokang-coding/p/18799190


友情链接:
Copyright © 2015 BOSS网游 - 高价值游戏活动发现中心 All Rights Reserved.