关于堆栈内存分配的问题
比如有如下两段程序:
//program 1
#include <stdio.h>
#include <string.h>
char *back(void)
{
char name[]="xxxxxxx";
return name;
}
void main()
{
char name[10];
strcpy(name,back());
puts(name);
getchar();
}
//program 2
#include <stdio.h>
#include <string.h>
char *back(void)
{
char *name="xxxxxxx";
return name;
}
void main()
{
char name[10];
strcpy(name,back());
puts(name);
getchar();
}
细心你就会发现program2只是把program1中的局部变量name换成了一个指针,结果就能正确打印出来了,我不明白为什么,我知道program1中的name为局部数组变量,运行完空间会自动释放,那指针变量难道就没有申请空间吗,局部变量,返回地址都是放在stack中的啊,难道他们的返回地址就不同吗?
多谢!!!