堆和栈
栈:
从高地址向低地址扩展,是一块连续的地址空间
由系统自动分配,速度快,没有碎片
linux下进程分配的栈默认是8M/10M,可以通过ulimit -a查看ulimit -s修改
//查看按需申请变量的地址
int a = 10;
int b = 20;
int c = 30;
//输出地址
cout << "a的地址为:" << &a << endl;
cout << "b的地址为:" << &b << endl;
cout << "c的地址为:" << &c << endl;
//输出
a的地址为:0x61fe04
b的地址为:0x61fe00
c的地址为:0x61fdfc
堆
从低地址向高地址扩展,是一块不连续的空间
堆由程序员分配,速度慢,会有碎片
32bit系统理论上是4G大小
int *p = new int(10);
int *q = new int(20);
int *r = new int(30);
cout << "p的地址为:" << p << endl;
cout << "q的地址为:" << q << endl;
cout << "r的地址为:" << r << endl;
//输出
p的地址为:0x631d90
q的地址为:0x631dd0
r的地址为:0x631e10