Jon*_*ood 2 c++ mfc object-lifetime visual-c++
我对内存和指针有一个非常透彻的理解,但我需要对C++管理一些对象的确切方法进行一些复习.
请考虑以下代码:
void Test()
{
    LPCTSTR psz = (LPCTSTR)GetString();
}
CString GetString()
{
    return CString(_T("abc"));
}
问题:
有人可以充实了如何GetString()返回本地对象并且它仍然在调用者中有效吗?
由于结果GetString()没有存储在任何地方,它是如何删除的?
为psz保证"安全"使用的的全部Test()功能?
很抱歉在这个例子中使用旧类,但这就是我现在正在使用的.
GetString 返回本地对象的副本(虽然可以省略实际的复制,并直接返回本地临时).
返回值GetString()是暂时的.像大多数临时演员一样,它会在完整表达结束时自动销毁(基本上是分号).
psz获取指向该临时管理的缓冲区的指针.一旦临时被摧毁,psz就会变得晃来晃去.任何实际使用它的尝试都会表现出未定义的行为.