我有一個非常簡單的代碼片段: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