看下面一段代码
-
#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/
---------------------
作者:清楼小刘
来源:CSDN
原文:https://blog.csdn.net/qq_33826977/article/details/66476289
版权声明:本文为作者原创文章,转载请附上博文链接!