[問題] stack與heap疑問
各位先進好,我有一個stack與heap的問題想請問,
通常stack與heap陸續配置的記憶體空間會逐步靠近,
就是說heap如果向下成長,stack就會向上成長,
借用此網站的程式結果: http://wp.mlab.tw/?p=312
此網站的程式結果是如同我上述所說的那樣逐步靠近,
但我自己在ubuntu底下用gcc跑出來的結果如下:
-----------------------------------------------
程式碼:
int main(){
int a;
int b;
int *f=malloc(sizeof(int));
int *g=malloc(sizeof(int));
printf("a:%p\n",&a);
printf("b:%p\n",&b);
printf("f:%p\n",f);
printf("g:%p\n",g);
}
------------------------------------------------
結果:
a:0xbf9334c0
b:0xbf9334c4
f:0x9f7f008
g:0x9f7f018
------------------------------------------------
無論我怎麼看都不覺得stack的成長趨勢會與heap互相靠近,
也與上述網站所跑的成果有差異,請問是OS關係嗎?還是我哪裡想錯了,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.20.149
※ 編輯: jwliang 來自: 118.160.20.149 (11/29 20:19)
推
11/29 21:16, , 1F
11/29 21:16, 1F
→
11/29 21:16, , 2F
11/29 21:16, 2F
→
11/29 21:17, , 3F
11/29 21:17, 3F
您的意思是說,記憶體配置時如果有遇到碎片,compiler可以選擇把local變數隨機插在他想要的位置嗎?
其實我是想問Linux底下stack與heap之間成長的方向是否會相反,謝謝您的回答!
推
11/29 21:34, , 4F
11/29 21:34, 4F
→
11/29 21:35, , 5F
11/29 21:35, 5F
→
11/29 21:36, , 6F
11/29 21:36, 6F
→
11/29 22:05, , 7F
11/29 22:05, 7F
→
11/29 22:06, , 8F
11/29 22:06, 8F
→
11/29 22:07, , 9F
11/29 22:07, 9F
※ 編輯: jwliang 來自: 118.160.20.149 (11/29 22:16)
→
11/29 22:39, , 10F
11/29 22:39, 10F
推
11/29 22:44, , 11F
11/29 22:44, 11F
→
11/29 22:44, , 12F
11/29 22:44, 12F
恩 謝謝回答,我知道會放在stack frame中,但我想問的是方向。
→
11/29 22:45, , 13F
11/29 22:45, 13F
※ 編輯: jwliang 來自: 118.160.20.149 (11/29 22:47)
推
11/29 22:47, , 14F
11/29 22:47, 14F
→
11/29 22:48, , 15F
11/29 22:48, 15F
→
11/29 22:48, , 16F
11/29 22:48, 16F
推
11/29 22:51, , 17F
11/29 22:51, 17F
推
11/29 22:52, , 18F
11/29 22:52, 18F
→
11/29 22:53, , 19F
11/29 22:53, 19F
推
11/29 22:56, , 20F
11/29 22:56, 20F
程式碼:
int main(){
int a;
int b;
int *f=malloc(sizeof(int));
int *g=malloc(sizeof(int));
a1();
printf("a:%p\n",&a);
printf("b:%p\n",&b);
printf("f:%p\n",f);
printf("g:%p\n",g);
}
int a1(){
int aa,aa2;
printf("aa:%p\n",&aa);
printf("aa:%p\n",&aa2);
}
執行結果:
aa:0xbfaf9968
aa:0xbfaf996c
a:0xbfaf9990
b:0xbfaf9994
f:0x9043008
g:0x9043018
恩...感覺他們還是一樣,不是會靠攏的,反而是一起往上成長!
※ 編輯: jwliang 來自: 118.160.20.149 (11/29 23:00)
推
11/29 22:59, , 21F
11/29 22:59, 21F
→
11/29 23:01, , 22F
11/29 23:01, 22F
→
11/29 23:02, , 23F
11/29 23:02, 23F
→
11/29 23:02, , 24F
11/29 23:02, 24F
推
11/29 23:04, , 25F
11/29 23:04, 25F
→
11/29 23:04, , 26F
11/29 23:04, 26F
→
11/29 23:05, , 27F
11/29 23:05, 27F
→
11/29 23:06, , 28F
11/29 23:06, 28F
喔喔 對!那我知道了 謝謝了!
→
11/29 23:06, , 29F
11/29 23:06, 29F
→
11/29 23:07, , 30F
11/29 23:07, 30F
※ 編輯: jwliang 來自: 118.160.20.149 (11/29 23:08)
→
11/29 23:08, , 31F
11/29 23:08, 31F
→
11/29 23:10, , 32F
11/29 23:10, 32F
推
11/29 23:10, , 33F
11/29 23:10, 33F
推
12/11 04:19, , 34F
12/11 04:19, 34F
→
12/11 04:20, , 35F
12/11 04:20, 35F
→
12/11 04:21, , 36F
12/11 04:21, 36F
→
12/11 04:24, , 37F
12/11 04:24, 37F