首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客206427677号
山东大学 测试工程师
发布于山东
关注
已关注
取消关注
@不想掉头发:
程序内存的分区(详解)
基础知识每日一记(3)1.程序中的内存从哪里来?1、程序执行需要内存支持。 程序是放在内存中运行,程序运行时需要内存来存储一些临时变量。2、内存本身在物理上是一个硬件器件,由硬件系统提供。3、内存是由操作系统统一管理。 为了内存管理方便又合理,操作系统提供了多种机制来让应用程序使用内存。根据自己的使用情况来选择某种方式获取内存、使用内存、释放内存。2.内存分区介绍:我们的内存一般分为四个区域提供使用,且每个区域存放的数据不同,使用效果也不同。它们分别是:堆区、栈区、全局区(静态区)、代码区。2.1.代码区:程序代码存放的位置(编译后的可执行二进制代码)。特点:共享性,只读性,在程序运行前就存在。2.2.全局区(静态区):存放全局变量、静态变量、静态函数的位置。特点:在程序结束后才释放,并且在内部还分为.bss区(未初始化)和.data区(已初始化)。2.3.栈区:存放普通局部变量(包括const修饰的局部变量)、函数的参数的位置。2.3.1栈的特点:1、栈是在运行时自动分配和自动收回:栈是自动管理的、程序员不需要手工干预。2、反复使用:栈内存在程序中其实就是一块空间,程序反复使用这一块空间。( 栈是哪来的?—— 应用程序在操作系统中运行时,操作系统分配一块栈空间给应用程序使用。栈大小由操作系统决定的。栈指针是由操作系统控制 )3、脏内存:由于栈是反复使用的,每次使用后程序不会清理,因此分配到时保留原来的值 4、临时性:变量在栈上只是临时分配了一个内存空间使用5、栈会溢出:操作系统分配的栈大小是有限的。大量使用栈会造成栈溢出。2.3.2使用栈时的注意点:程序中定义局部变量的时候必须初始化。否则会出现莫名错误。函数不能返回栈变量的指针,因为这个空间是临时的。定义局部变量不能太大,避免栈溢出。2.4.堆区:存放程序运行时动态申请的空间。特点:一般需要程序员手动释放。2.4.1堆的特点:1、操作系统堆管理器管理:堆管理器是操作系统的一块模块,堆管理内存分配灵活,按需分配。2、大块内存:堆内存管理者总量很大的操作系统内存块,各程序按需向操作系统去申请,使用完之后要释放。3、程序手动申请和释放:需要程序员写代码去申请malloc和释放free(或者new)。4、脏内存:堆内存也是反复使用的,使用者用完释放前不会清除。5、临时性:堆内存只有在malloc和free之间属于这个进程,可以访问。2.4.1使用堆时的注意点:malloc申请的内存时用完后要free释放。 free(p);会告诉对管理器这段内存我用完了可以回收了(new出来的记得delete)。堆管理器回收了这段内存后这段内存当前进程就不应该再使用。因为释放后堆管理器就可能把这段内存再次分配给别的进程。调用free归还这段内存之前,指向这段内存的指针p一定不能丢。 因为p一旦丢失这段malloc来的内存就永远的丢失了(内存泄露),直到当前程序结束时操作系统才会回收这段内存。gcc中的malloc默认最小以16B分配单位的。 如果malloc小于16B的大小时都会返回一个16字节的大小内存。所以在你申请malloc(0)和malloc(4),堆管理器都分配16字节空间。3.补充:部分内容转载于:https://blog.csdn.net/weixin_43564241/article/details/127830981
点赞 1
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
08-14 17:45
门头沟学院 Java
这公司太牛了,同事都在劝我跑路
上班差不多一个月,从刚开始一个同事劝我跑路,到现在差不多所有人都劝我跑路这公司真是厉害了,如何做到让同事们都不满意的😂
码农索隆:
如果是这种情况,就赶紧跑路吧,否则你就会成为下一个劝别人走的前辈了😑
实习的内耗时刻
点赞
评论
收藏
分享
08-18 15:52
Python
求内推
得罪HR了求一个企查查内推😭
爱睡觉的冰箱哥:
硬气一点,不卑不亢别舔的太难看
点赞
评论
收藏
分享
08-01 11:19
电气工程师
救救孩子吧
找工作找的快崩溃了
我懒羊羊觉得没问题:
写的太学生化了
,像作文一样,很难看出你和岗位的匹配度
点赞
评论
收藏
分享
08-14 16:26
CVTE_web后台开发工程师(准入职员工)
CVTE内推,CVTE内推码
工作一年给点经验 cvte加不加班? 加还是加的,但是看部门 其他的一些文职部门我看下班还是六点准时的 而且不是强制,你事情做完可以走的,全天不打卡 工资待遇怎么样? 待遇还是挺不错,校招普遍都是10k以上,目前我见过最高的是18k的。 有免费的健身房,游泳池,各种课程,比如舞蹈课,美声课,健身瑜伽课,球类运动,乒乓球台球羽毛球什么的都是有的,而且全部免费,有私教一对一要另外付费。吃饭免费早中晚,周六也有,二产还有西餐厅,而且非常丰盛自助餐,水果也天天供应,这点是没得说的好。公司提供住宿但是是要收费的,天天班车间接送上下班。有自己的医院,经常请一些大医院的专家来问诊,价格比外面要低的很多。一些...
CVTE公司福利 552人发布
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
给26届小伙伴们一些建议
1.0W
2
...
半夜12点都叫提前下班了?
7217
3
...
大家辛辛苦苦秋招 结果你作弊拿到了字节算法sp
6423
4
...
面试不要紧张,人生的容错率高的可怕
6199
5
...
字节三面-会赢吗
5856
6
...
如何提高秋招面试成功率?
5671
7
...
26前端校招 腾讯wxg 3面 面经
4556
8
...
秋招第一个offer 附tl
4456
9
...
8.14 腾讯TEG-云架构平台部-后台开发一面凉经
4217
10
...
个人对八股的认识
3882
创作者周榜
更多
正在热议
更多
#
你怎么看待AI面试
#
7254次浏览
90人参与
#
我的省钱小妙招
#
22670次浏览
371人参与
#
实习需要主动找活干吗?
#
7871次浏览
87人参与
#
移动求职进展汇总
#
5833次浏览
50人参与
#
转正答辩报告怎么写
#
4176次浏览
44人参与
#
你觉得技术面多长时间合理?
#
104799次浏览
750人参与
#
业务面应该做哪些准备
#
3271次浏览
91人参与
#
大厂面试问八股多还是项目多?
#
5339次浏览
92人参与
#
小米硬件提前批进度交流
#
175207次浏览
1542人参与
#
面试太紧张了怎么办?
#
8169次浏览
178人参与
#
你有没有为省钱「拼过命」
#
3415次浏览
68人参与
#
你是如何祛除班味的
#
2954次浏览
50人参与
#
机械专业只有考研才有出路吗
#
124319次浏览
890人参与
#
你被mentor骂过吗?
#
14451次浏览
89人参与
#
机械人,你最希望上岸的公司是?
#
175594次浏览
1874人参与
#
我想去国央企的原因
#
62992次浏览
397人参与
#
kpi面有什么特征
#
64754次浏览
437人参与
#
小米提前批笔试难吗
#
37267次浏览
366人参与
#
饿了么求职进展汇总
#
67549次浏览
654人参与
#
秋招投递记录
#
36388次浏览
399人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务