我有一个非常简单的代码片段:COUT的char *是不同
#include <iostream>
using namespace std;
string getString() {
return "test";
}
int main(){
const char* testString = getString().c_str();
cout << "string 1:" << testString << endl;
string dummy[] = {"1","2","0"};
cout << "string 2:" << testString << endl;
return 0;
}
我想到两人COUTS将打印相同的输出,但我得到的输出是
string 1:test
string 2:1
任何人都可以解释为什么会发生这种情况?另外,我观察到两件事:
1)如果dummy[]
是int
类型,那么它们将打印出与预期完全相同的字符串test
。
2)如果我首先将getString()
分配给一个字符串变量,那么将第一行改为const char* testString = variable.c_str();
,然后它们会按照预期输出相同的字符串。
true,没有进行内存分配来返回字符串。 – Elod 2014-10-01 16:40:17
@Elod:内存分配给临时;但是暂时的,它在这条线的末尾被摧毁了。 – 2014-10-01 16:42:16