内存中栈上的地址是向下增长,堆得地址是向上增长。
#include <stdio.h> #include <stdlib.h> int main() { int mmap[10]; int i; for(i=0;i<9;i++) { mmap[i] = i; } for(i=0;i<9;i++) { printf("%d ------- %d ",mmap[i],&mmap[i]); } printf(" "); int *a; a = (int *) malloc(10 * sizeof(int)); for(i=0;i<9;i++) { a[i] = i; } for(i=0;i<9;i++) { printf("%d ------- %d ",a[i],&a[i]); } return 0; }
运行结果:
0 ------- -718935696 1 ------- -718935692 2 ------- -718935688 3 ------- -718935684 4 ------- -718935680 5 ------- -718935676 6 ------- -718935672 7 ------- -718935668 8 ------- -718935664 0 ------- 434298896 1 ------- 434298900 2 ------- 434298904 3 ------- 434298908 4 ------- 434298912 5 ------- 434298916 6 ------- 434298920 7 ------- 434298924 8 ------- 434298928