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