前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序在内存中的分布

程序在内存中的分布

作者头像
Elapse
发布2020-08-17 11:41:17
8080
发布2020-08-17 11:41:17
举报
文章被收录于专栏:E条咸鱼E条咸鱼

本篇原创作者:Rj45

大纲

对于x86架构下的Linux程序,在被载入内存中会展开成如下情况:

1、对于x86 架构的系统来说,器虚拟空间为4GB. 2、高位的1GB为内核空间。3、低位的3GB由Text segment(ELF)、Data segment、Bss segment、Heap、Memory mapping Segment、stack。4、Memory mapping Segment存放Linux的动态链接库 5、对于stack来说,其最大值为8MB。

.bss

1、作用:bss段用来存放没有被初始化和已经被初始化为0的全局变量

2、例子

3、编译链接

代码语言:javascript
复制
sudo gcc -g bss.c -o bss

4、查看

代码语言:javascript
复制
objdump -h bss | grep bss

.data

1、作用:data段用来存放已经被初始化为非0的全局变量

2、例子

3、编译链接

代码语言:javascript
复制
gcc -g data.c -o data

4、查看

代码语言:javascript
复制
objdump -h data | grep \\.data

.rodata

作用:rodata段用来存放常量数据、被编译器自动存放来的字符串和加 const关键字的常量数据。

.text

作用:text段用来存放代码和部分整数常量,该段是可执行的。

stack

作用:1、stack存放函数的临时变量、局部变量、函数参数和返回值 2、由编译器自动分配和释放。

heap

1、作用:heap用来动态分配内存,由程序员控制,交由程序自身决定开辟和释放。malloc&free calloc&realloc 2、例子 malloc&free

3、编译链接

代码语言:javascript
复制
sudo gcc heap.c -o heap

4、查看

5、其他方式

1)calloc()函数

代码语言:javascript
复制
void *calloc(size_t number,size_t size);

用法1
int *p = (int *)calloc(1024,sizeof(int));

用法2
int *p = (int *)malloc(1024*sizeof(int));
memset(p.0,1024*sizeof(int));

number表示要分配元素的个数、size表示每个元素的大小、分配的内存空间是numbersize、返回值为void类型的指针,指向分配号的内存首地址。2)realloc()函数 realloc()函数用来重新分配正在使用的一块内存大小。

代码语言:javascript
复制
void *realloc(void *ptr,size_t size);

int *p = (int *)malloc(1024);
p = (int *)realloc(512);// 重新分配为 512字节大小内存
p = (int *)realloc(2048);// 重新分配为2048字节大小内存

参考

https://www.cnblogs.com/hythink/p/5422602.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 E条咸鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大纲
  • .bss
  • .data
  • .rodata
  • .text
  • stack
  • heap
  • 参考
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档