看下面一段代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b; //栈
printf("%x\n%x\n",&a,&b);
int *c = new (int ); //堆
printf("%x\n",c);
}
运行结果:
我也有这样的疑问,记得学习的计算机组成原理上都说栈在高地址往低处增长,堆在低地址往高处增长,
那么实际情况到底如何呢?
直到看到知乎:
https://www.zhihu.com/question/36103513?sort=created
总结一下:
1. 至于数组元素与栈的增长方向:C与C++语言规范都规定了数组元素是分布在连续递增的地址上的。
2. 在Windows上不应该对栈和堆的相对位置做任何假设
附上一个讲解内存管理的写的很好的博客:
http://kb.cnblogs.com/page/66608/