论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
【重学C++】01| C++ 如何进行内存资源管理? ...
【重学C++】01| C++ 如何进行内存资源管理?
曂沅仴駦
论坛元老
|
2023-5-20 21:17:23
|
显示全部楼层
|
阅读模式
楼主
主题
1854
|
帖子
1854
|
积分
5562
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
文章首发
【重学C++】01| C++ 如何进行内存资源管理?
前言
大家好,我是只讲技术干货的会玩code,今天是【重学C++】的第一讲,我们来学习下C++的内存管理。
与java、golang等自带垃圾回收机制的语言不同,C++并不会自动回收内存。我们必须手动管理堆上内存分配和释放,这往往会导致内存泄漏和内存溢出等问题。而且,这些问题可能不会立即出现,而是运行一段时间后,才会暴露出现,排查也很困难。因此,了解和掌握C++中的内存管理技巧和工具是非常重要的,可以提高程序性能、减少错误和增加安全性。
内存分区
在C++中,将操作系统分配给程序的内存空间按照用途划分了
代码段、数据段、栈、堆
几个不同的区域,每个区域都有其独特的内存管理机制。
代码区
代码区是用于存储程序代码的区域,代码段在程序真正执行前就被加载到内存中,在程序执行期间,代码区内存不会被修改和释放。
由于代码区是只读的,所以会被多个进程共享。在多个进程同时执行同一个程序时,操作系统只需要将代码段加载到内存中一次,然后让多个进程共享这个内存区域即可。
数据段
数据段用于存储静态全局变量、静态局部变量和静态常量等静态数据。在程序运行期间,数据段的大小固定不变,但其内容可以被修改。按照变量是否被初始化。数据段可分为已初始化数据段和未初始化数据段。
栈
C++中函数调用以及函数内的局部变量的使用,都是通过栈这个内存分区实现的。栈分区由操作系统自动分配和释放,是一种"后进先出"的一种内存分区。每个栈的大小是固定的,一般只有几MB,所以如果栈变量太大,或者函数调用嵌套太深,容易发生栈溢出(stack overflow)。
先来一段示例代码,看看C++是如何使用栈进行使用栈来进行函数调用的。
[code]#include void inner(int a) { std::cout
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
曂沅仴駦
论坛元老
这个人很懒什么都没写!
楼主热帖
ICA:1靶场
gitee使用教程,创建项目仓库并上传代 ...
教你如何解决T+0的问题
国内IT硬件如何铸就新辉煌? ...
架构设计基础设施保障IaaS之计算篇 ...
快速入门python看过的一些资料 ...
JS中的Set与Map
Excel文件校验
超融合技术在银行业的应用及实施中的关 ...
如何筑造数据安全边界
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
linux
前端开发
快速回复
返回顶部
返回列表