Is it safe to call temporary object#39;s methods?(调用临时对象的方法是否安全?)
问题描述
我有一个返回 char* 的函数.由于我必须连接一些字符串,所以我写了以下行:
I have a function which shall return a char*. Since I have to concatenate some strings, I wrote the following line:
std::string other_text;
// ...
func(("text" + other_text).c_str());
我知道我可以避免命名我想使用的字符串的问题.我只是想借此机会提出一个更笼统的问题:调用临时变量的方法是否安全?是否符合标准?
I know that I could avoid the question naming the string I want to use. I just want to take the chance to make a more general question: is it safe to call methods of temporary variables? is it standard compliant?
推荐答案
调用临时变量的方法是安全的,但返回临时变量的char*供以后使用是不安全的.
It is safe to call methods of temporary variables, but not safe to return a char* of a temporary variable for later use.
这个 char* 指向一个即将被释放的缓冲区.一旦它被释放,你将有一个指向内存中无效区域的指针.
This char* points to a buffer that will be freed soon. Once it is freed you will have a pointer to an invalid region in memory.
请返回一个 std::string 对象.
Instead please return an std::string object.
这篇关于调用临时对象的方法是否安全?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:调用临时对象的方法是否安全?
- C++ 数据结构超详细讲解顺序表 2023-03-25
- C语言qsort()函数的使用方法详解 2023-04-26
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- ubuntu下C/C++获取剩余内存 2023-09-18
- Qt计时器使用方法详解 2023-05-30
- Easyx实现扫雷游戏 2023-02-06
- C语言详解float类型在内存中的存储方式 2023-03-27
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09