用函数返回值回传递动态内存
用函数返回值来传递动态内存在程序调试中发现str GetString()语句执行完后监视中显示str的值为“hello w
用函数返回值来传递动态内存

在程序调试中发现str = GetString();语句执行完后监视中显示str的值为“hello world”,最后输出的确实是垃圾(不是“hello world”),想知道为什么调试中会出现这种情况?求指导 动态内存
[解决办法]
在执行
std::cout << str << std::endl;
后,栈上的内容被修改,在这句前后watch一下。
修改办法:
char const* getString()
{
return "hello world";
}
[解决办法]这是因为你的工程小,系统回收,只是说明那个内存空间是可以再利用的,不是真正就没有了那片空间的,当有很大的工程的时候,栈空间不够的时候,你这个数据是得不到正确的,
[解决办法]char p[]="hello world";这个字符串在GetString调用完后被释放调用了、、之所以str可以显示出来是因为str指向的内存空间内容还是"hello world",当cout<<str<<endl;执行时里面涉及到的函数调用将堆栈破坏了,str所指向的内容不再是"hello world",,所以打印出来乱码了