关于内存分配的一点疑问
#include <cstring>
#include <iostream>
using namespace std;
char* Func1();
char* Func2();
void main(void)
{
char *p = NULL;
//p = Func1();
p = Func2();
cout<<p<<endl;
getch();
}
char* Func1()
{
char *str = "Hello";
return str;
}
char* Func2()
{
char str[] = "Hello";
return str;
}
Func2()里的str是在栈上分配的内存,调用结束后str占用的内存就被释放了,所以调用Func2()输出乱码,那么Func1()不是
同样的道理吗,为什么可以输出Hello?
[解决办法]
char *str = "Hello";//str会被设置为常量,这个数据区里面很少变动,所以你获得地址后应该能正常输出的。
[解决办法]