二进制 1:内存分配

一、常见段

1、text / code

【通常属于只读,代码段是可共享的,从而节省内存资源】 存放程序执行的机器指令(这部分区域的大小在程序运行前就已经确定)

2、data

【静态内存分配,‌其生命周期与程序的执行周期相同】

  • 被初始化的全局变量
  • 静态变量(‌包括全局静态变量和局部静态变量)‌
  • 常量数据
  • class中的初始化的静态成员

3、bss

【静态内存分配,变量在程序开始执行前不会被分配具体的内存值,‌而是在程序执行时才被赋予初始值】

  • 未初始化的全局变量
  • 未初始化的静态变量(局部变量+全局变量)
  • 初始化为0的全局变量or静态变量
  • class中的未初始化的静态成员

4、HEAP

【动态内存分配,需要显式地申请和释放空间】 程序手动malloc和free的区域

5、STACK

【栈由操作系统分配和管理,‌不需要程序员显式管理】

用于存放函数的参数值、局部变量的值、以及在进行任务切换时存放当前任务的上下文内容。

二、常见段

text:【R+X】可执行指令

data:【R+W】已初始化的全局变量 / 静态变量

bss:【R+W】未初始化的全局变量 / 静态变量

rodata:【R】只读数据

三、常见问题汇总

0x1(单选)下面哪种变量定义不当,可能导致堆栈溢出

A. 静态全局变量 B. 动态全局变量 C. 静态局部变量 D. 动态局部变量(v)

全部评论

相关推荐

12-16 14:57
门头沟学院 Java
迷茫的大四🐶:是这样的,我都拿到你这同一水平的offer了,那我接你的offer的意义在哪,我一开始想接你们的offer期待是很高的,希望你们下次继续努力
你今年的保底offer是...
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下 HR 会来跟你谈。” 我当时脑子直接宕机,一句话都没憋出来。后面 HR 找我谈话,直属领导也在旁边。HR 说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务