我只是好奇,如果堆棧和堆上的變量(指針)的地址長度之間有任何關聯。在很多情況下,我已經看到,與堆相比,堆棧變量通常更長。例如,考慮下面的簡單的測試:棧和堆上的內存位置模式
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 0;
int *j = malloc(sizeof(int)); *j = 0;
printf("&i = %p\n j = %p\n", &i, j);
free(j);
return 0;
}
輸出:
&i = 0x7fffe9c7fa5c
j = 0x100e010
這些結果在使用Linux的gcc
獲得;這可能是操作系統/編譯器依賴?
不是100%確定,但我會假定它是CPU/OS /編譯器特定的順序。另外,你甚至可能看不到物理地址。此外,堆增長並且堆棧增長減少,所以堆棧變量的地址低一些是有道理的。 – Corbin 2012-03-25 04:29:19