C++ 堆栈区别

//
//  main.cpp
//  C++Test26
//

#include <iostream>
using namespace std;
// C++ 堆栈区别
//(1)与堆相比,栈不会导致内存碎片,分配效率高。
//所以栈在程序中是应用最广泛的,就算是函数的调用也利用栈去完成,函数调用过程中的参数,返回地址, EBP和局部变量都采用栈的方式存放。如果少量数据需要频繁的操作,那么在程序中动态申请少量栈内存(例如使用alloca函数),会获得很好的性能提升。
//(2)堆可以申请的内存大很多。
//与堆相比,栈的使用不是那么灵活,如果分配大量的内存空间,推荐使用堆内存。
int a = 0; //全局初始化区

char *p1;  //全局未初始化区

int main(int argc, const char * argv[]) {
    int b; //栈
    
    char  s[] = "abc"; //栈
    
    char *p2; //栈
    
    char *p3 = "123456"; //123456\0 在常量区,p3 在栈区
    
    int *p4 = new int(100); // 在堆
    
    static  int c = 0; //全局(静态)初始化区
    
    p1 = (char *)malloc(10);//堆
    
    p2 = (char *)malloc (20);//堆
    return 0;
}

 

参考:https://blog.csdn.net/changyourmind/article/details/51816768

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VCHH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值