原文链接:http://blog.csdn.net/morewindows/article/details/6851681
一、全部在主函数中
1.变量在内存地址的分布为:堆-栈-代码区-全局静态-常量数据;
2.同一区域的各变量按声明的顺序在内存之中依次由低到高分配空间(只有未赋值的全局变量是个例外)。
3.全局变量和静态变量如果不赋值,默认为0。栈中的变量如果不赋值,则是一个随机的数据。
4.编译器会认为全局变量和静态变量是等同的,已初始化的全局变量和静态变量分配在一起,未初始化的全局变量和静 态变量分配在另一起。
二、增加函数的调用,观察主函数和子函数中的参数和变量如何分配?
主函数中栈的地址都要高于子函数中参数及栈地址,证明了栈的伸展方向是由高地址向低地址扩展的。主函数和子函数中静态数据的地址也是相邻的,说明程序会将已初始化的全局变量和静态变量分配在一起,未初始化的全局变量和表态变量分配在另一起。