众所周知,c程序的运行时,内存分为以下几个段:
- 代码段(Text segment )
- 数据段(Initialized data segment)
- BSS段(Uninitialized data segment)
- 栈(stack)
- 堆(heap)
教科书上说,栈是由高地址向低地址增长,那么如何验证呢?
我们知道,函数中直接定义的变量是在栈(stack)上的,那么我们只需要先后定义两个变量,然后比较它们的地址大小就能够知道栈是否为高地址像低地址增长了。
代码如下:
#include<stdio.h>
int main()
{
int a;
int b;
printf("%d\n%d\n",&a,&b);
return 0;
}
我的机器的运行结果为:
6356748
6356744
在程序中应该是a先入栈,然后b在入栈,因为这里b的地址比a的小,说明了栈的增长是由高地址向低地址增长的!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。