c++内存区域

 1.内存区域

  1. 栈(Stack): 栈是用于存储局部变量、函数参数以及函数调用的上下文信息的区域。每次函数调用时,相关的信息都会被推入栈中,函数返回时会弹出。栈具有"后进先出"(LIFO)的特性。栈的大小通常受到限制,过多的栈使用可能导致栈溢出。

  2. 堆(Heap): 堆是动态分配内存的区域,用于存储程序运行时动态创建的对象。堆上的内存需要显式地分配和释放,通常通过 newdelete 或者 mallocfree 进行管理。堆上的内存分配较灵活,但也需要手动管理内存,以避免内存泄漏和访问非法内存。

  3. 全局存储区(Global Storage Area): 也称为静态存储区,用于存储全局变量、静态变量以及常量。这些数据在程序整个生命周期内都存在,不会因为函数的调用和返回而变化。

  4. 常量存储区(Constant Storage Area): 用于存储常量数据,如字符串常量、全局常量等。这些数据是只读的,无法在程序运行时修改。

  5. 程序代码区(Code Area): 也称为文本区,存储程序的机器指令或者可执行代码。这些指令在程序运行时被解释和执行。

 

2.注意事项

1. 默认情况下,std::stack 使用 std::deque 作为其底层容器。因此,std::stack 中的数据会存储在使用 std::deque 实现的堆栈中,而 std::deque 的存储位置在堆(Heap)区域。

2. 在深度优先算法中,处理大数据,使用堆栈比递归更安全。递归储存在栈区,可能会爆栈。而stack存储在堆区,虽然操作麻烦,但安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值