C++内存空间_内存管理_

内存空间

        计算机的内存是一个线性的字节数组,每个字节都有一个唯一的地址。程序在运行时会使用这部分内存来存储各种数据

栈_Stack-内存向低地址方向增长

• 栈由编译器自动分配和释放的内存区域,用于存储局部变量函数参数

• 栈内存分配和回收速度快,遵循后进先出LIFO。例如,当一个函数被调用时,其参数和局部变量会被压入栈中(压栈_Push),函数结束时,这些数据会从栈中弹出(弹栈_POP)。

• 栈空间大小有限,如果局部变量过多或者过大,可能造成栈溢出错误。

堆_Heap-内存向高地址方向增长

• 堆是动态分配的内存区域(比如创建对象或数组时),由程序员通过newdelete或者mallocfree函数来控制。

• 堆内存分配和回收速度慢,与栈不同,堆的空间相对较大,但内存分配和释放的开销也较大。通常受限于系统的可用内存

· 如果在堆上分配了内存,但没有及时释放,就会导致内存泄漏。

全局/静态存储区_Global/Static Storage

• 用于存储全局变量和静态变量。

• 这些变量在程序的整个生命周期内都存在。

• 全局变量和静态变量在程序启动时分配,在程序结束时释放。

常量存储区_Constant Data

• 用于存储常量值,如字符串字面量和常量整型值,这些值在程序运行期间不能被修改。

代码区_Code Segment

• 存储程序的执行代码,这个区域是只读的,用于存储函数体和其他可执行代码。

合理地管理内存是非常重要的,因为不当的内存管理可能会导致内存泄漏野指针越界访问等问题。使用智能指针(如std::unique_ptrstd::shared_ptr)可以帮助自动管理堆内存,减少内存泄漏的风险

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值