栈的特性为连续的因此我做的个实验
运行结果
从这里能看出来 只有主函数里的变量和局部函数里的变量是连续的 这两个函数之间是不连续的为什么?
以我的理解先执行test(),test里的a、b、c入栈 生命周期结束 mian里的a、b、c入栈他们的内存位置应该相同啊
这不是废话么,堆栈上除了局部变量,还有返回地址、参数。
程序在走到test()那一句的时候,要把函数test的形参(这里没有形参)、返回地址,和main函数的栈底ebp压入栈,然后再是test内的局部变量,等程序从test返回后,test内的a、b、c早被pop出了然后是ebp、函数返回地址pop,然后栈中再压入main的a、b、c,局部变量,所以在这一过程中,test中的a、b、c和main中的a、b、c地址不连续是很正常的。