C++内存布局与生命周期
C++程序运行时,内存被划分为几个不同的区域,每个区域有不同的分配方式、生命周期和性能特点。理解这些区域的差异,是掌握C++内存管理的基础。 内存区域概览程序中的数据有不同的特点:指令不可修改、全局数据贯穿始终、局部变量随调随销、动态数据大小不定。将它们混在一起管理既不安全也不高效,因此操作系统将内存划分为不同区域,针对各自特点采用最合适的管理策略。 如图所示,从低地址到高地址依次为: 代码段(.text)存放编译后的机器指令,只读且在程序运行期间保持不变,防止程序意外修改自身逻辑。 常量区(.rodata)存放只读数据,包括字符串字面量和const全局常量。编译器可能将相同的字符串字...
C++初始化语法详解
C++提供了多种初始化语法,从C语言继承的传统方式到现代C++引入的统一初始化,每种方式都有其适用场景和特点。理解这些初始化方式的差异,有助于编写更安全、更清晰的代码。 一、声明、定义、初始化与赋值在介绍具体语法前,先区分四个容易混淆的概念。声明(declaration)是告诉编译器变量的类型和名称,不一定分配存储空间,如extern int x;。定义(definition)则为变量分配存储空间,创建变量实体,一个变量只能被定义一次。初始化(initialization)是在定义变量的同时赋予初始值,发生在对象创建的那一刻。赋值(assignment)是对已存在的对象重新设置值,发生在...
为什么我们不买生育这笔账了
如今许多人鼓励生育的理由,通常不外乎三点: 一是将孩子视为长期投资,指望获得物质回报; 二是指望养老有依靠,担心老了无人照顾,甚至陷入”进养老院被护工打”的困境; 三是通过陪伴孩子的成长,弥补自己童年的遗憾,或将未实现的愿望寄托在下一代身上。 但年轻一代看看自己当前的生活,便知道这些设想未必成立。 首先,在经济压力下,许多人维持自身生活已不容易,不依赖父母支持已属难得,更不用说给予父母丰厚的物质回报——从纯粹经济账来算,养育孩子投入巨大,很难说是”划算的投资”。 其次,即便物质上或许能略有支持,亲身照顾年迈父母更是难上加难。在996、异地奔波成为常态的今天,连请个假都需反复权衡,...
从坚定读研到放弃24w奖学金加入腾讯
标题党致歉……不过确实是放弃了港科大(广州)的研究型硕士offer,选择了本科就业。 从刚入学起,身边无论老师同学还是父母都在传递万般皆下品,惟有读研高的思想,我也未能免俗。为此,我提前联系研究生导师做科研,还发表了一篇论文。可惜事与愿违,大一考砸了几门学分很高的数理课以后就失去了保研的希望。期间纠结过靠竞赛加分补足,也放弃过学生干部工作死磕专业课,但是不愿意再体验像高考般千军万马过独木桥的考研,最后兜兜转转了解到留学。 家里没钱,所以我只能考虑全奖项目,恰好在大二听说了刚成立的港科广,硬件设施诱人,师资好,还开设全额奖学金的硕士项目。虽然是中外合办学校,不算真正的留学,但也给了我这样成...
暑期实习投递总结
刚刚收到了腾讯的入职报到提醒,想着趁热打铁总结一下这一个月的投递情况。 我个人的准备时间只有断续三个多月。循规蹈矩地力扣刷200多题、b站学java项目、牛客和java guide背面经,加上中途的考试、过年、军训(大三军训),已经耗费了我大部分精力。老实说我的竞争力并不强,加上只考虑本地的实习,因此被大厂挂了个遍,中厂能收到面试的也寥寥无几。兜兜转转,最后还是第一家投递的腾讯收留了我。 一路准备下来,算法、项目和八股除了帮助我收获offer以外,更让我对技术祛魅了。回想刚进大学的时候,那会总觉得进大厂工作是朦朦胧胧的梦,也怀疑自己是否真有能力学会这么复杂的技术栈。但几个月的学习,让我...


