当功能返回CSTRING时会发生什么
What happens when a function returns a CString?
我对记忆和指针有一个非常透彻的理解,但是我需要对C 确切地管理封面中的某些对象进行一些回修。
考虑以下代码:
void Test()
{
LPCTSTR psz = (LPCTSTR)GetString();
}
CString GetString()
{
return CString(_T("abc"));
}
问题:
有人可以充实
GetString()
如何返回本地对象,并且在呼叫者中仍然有效?自
GetString()
的结果没有存储在任何地方,如何删除?psz
是否可以保证在Test()
功能中使用"安全"?
很抱歉在此示例中使用旧类,但这就是我现在正在使用的。
-
GetString
返回本地对象的副本(尽管可以省略实际复制,并且直接返回了本地临时)。 -
GetString()
的返回值是临时的。像大多数临时性一样,它在完整表达的末尾自动被破坏(本质上是在半隆)。 -
psz
获取由该临时性管理的缓冲区指针。一旦临时销毁,psz
就会悬挂。任何实际使用它的尝试都会表现出不确定的行为。
相关文章:
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 文件系统:复制功能的速度秘诀是什么
- 我可以做些什么来消除或最小化这种将提供相同功能和行为的代码重复
- c++20[[no.unique_address]]中的新功能是什么
- creat_list2功能有什么问题?
- 此工厂功能有什么问题?
- 这个Arduino睡眠设置的周边是什么警报功能?
- "(void) cast"与功能有什么区别 "__attributes__"来沉默未使用的参数警告?
- 当再次触发信号时,从Qt插槽执行的功能被第二次调用时会发生什么?
- 这种错误的原因是什么:将"功能"重新定义为不同类型的符号
- 我做错了什么?GetDiskFreeSpaceExA的功能根本不起作用
- 关键字使用的功能是什么?
- 新功能"synchronized"块在C++中提供了什么优势?
- 对于没有功能的结构,"new (ptr) mystruct;"做什么?
- 引用 using 声明引入的功能的句子是什么意思?
- 制作uint128库却不能,找出什么功能搞砸了
- 我应该使用什么功能在mac OS X中打开文件
- 有什么功能可以知道键盘的某个键是否被按下
- 等待使用什么功能
- 我应该使用什么I/O功能来写入.bmp文件