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