由于函数栈内存分配顺序真是方向不同,容易出错,所以运行一下程序特意证明了一下。直接上程序,程序很简单。
#include<stdio.h>
int main(void)
{
int a;
int b;
char buf[4];
printf("&a:%p\n",&a);
printf("&b:%p\n",&b);
printf("buf的地址:%p\n",&buf[0]);
printf("buf+1地址:%p\n",&buf[1]);
printf("buf+2地址:%p\n",&buf[2]);
printf("buf+3地址:%p\n",&buf[3]);
printf("buf+4地址:%p\n",&buf[4]);//故意越界数组去访问。
return 0;
}
&a:0018FF44
&b:0018FF40
buf的地址:0018FF3C
buf+1地址:0018FF3D
buf+2地址:0018FF3E
buf+3地址:0018FF3F
buf+4地址:0018FF40
总结:
本文通过一个简单的C程序演示了函数栈中局部变量的内存分配顺序,并展示了如何通过打印变量地址来验证这一顺序。实验结果表明,整型变量与字符数组在栈中的分配顺序及其地址递增方向。
2008

被折叠的 条评论
为什么被折叠?



