1. 程式人生 > >堆與棧的記憶體地址相對高低

堆與棧的記憶體地址相對高低

看下面一段程式碼

#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);
} 

執行結果:



我也有這樣的疑問,記得學習的計算機組成原理上都說棧在高地址往低處增長,堆在低地址往高處增長,

那麼實際情況到底如何呢?

直到看到知乎:

總結一下:

1. 至於陣列元素與棧的增長方向:C與C++語言規範都規定了陣列元素是分佈在連續遞增的地址上的。

2. Windows上不應該對棧和堆的相對位置做任何假設

附上一個講解記憶體管理的寫的很好的部落格: