C++ 堆栈区别「建议收藏」

C++ 堆栈区别「建议收藏」////main.cpp//C++Test26//#include<iostream>usingnamespacestd;//C++堆栈区别//(1)与堆相比,栈不会导致内存碎片,分配效率高。//所以栈在程序中是应用最广泛的,就算是函数的调用也利用栈去完成,函数调用过程中的参数,返回地址,EBP和局部变量都采用栈的方式存放。如果少量数据需要频繁的…

//
//  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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10574.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注