#include <cstdio>
#include <string>
std::string foo()
{
return "Hello, World!";
}
int main()
{
printf("%s\n", foo().c_str());
}
0
A
回答
0
是的,它足夠長。字符串文字將在函數返回時不再存在,但在此時它已被複制到臨時文件std::string
。該字符串將被複制(或將通過複製elision在呼叫站點創建)到調用代碼。結果字符串將一直存在,直到表達式的結尾,足以傳遞給printf
。
+1
'字符串文字將在函數返回時不再存在,否則不會,字符串文字具有靜態存儲持續時間。這與問題無關。 – sbabbi 2015-02-10 22:52:59
0
return "Hello, World!";
返回std::string
(隱含)從c風格字符串文字構成,其可以被認爲是在功能的範圍static
。
臨時std::string
在這種情況下從foo()
返回後可以認爲是穩定的。它將被複制,或者至少被移動到更現代的標準實現。
相關問題
- 1. 這個臨時引用是否能夠存活足夠長的時間?
- 2. 無法將字符串拆分爲具有明確生命期的字符串切片,因爲字符串沒有足夠長的生命
- 3. 超時時間總是足夠長嗎?
- 4. 爲字符串的實際長度分配足夠的空間
- 5. string :: size_type是否足夠容納任何字符串?
- 6. C++臨時對象的生命週期 - 是否安全?
- 7. LayoutAwarePage的MVVM是否足夠?
- 8. 延長臨時對象的生命週期
- 9. 壽命的參考值盒裝不活足夠長的時間
- 10. java.util.regexp是否足夠高效?
- 11. uNhAddIns是否足夠活躍?
- 12. Gmail是否足夠安全?
- 13. PHP是否足夠動態?
- 14. 這是否足夠安全?
- 15. MinGW是否足夠穩定
- 16. 在C++中保證臨時生命期?
- 17. Android臨時文件 - 生命週期
- 18. 解析長字符串日期時間
- 19. 綁定到函數參數的引用是否會延長該臨時的生命週期?
- 20. 這段代碼是否創建一個臨時字符串?
- 21. NSMutableDictionary不夠堅持足夠長的時間
- 22. SQL字符串替換錯誤沒有足夠的論據格式字符串
- 23. 移動字符串到另一個字符串中有足夠的能力
- 24. 將變量傳遞給命令 - 沒有足夠的格式字符串參數
- 25. 是否有必要使用===來比較Javascript中的字符串或者==是否足夠?
- 26. Java中的反向字符串不使用任何臨時字符串,字符或字符串生成器
- 27. 生成字符串和內存不足
- 28. 'params'串是否足夠防止偶爾的讀者讀取它?
- 29. Python MySQLdb錯誤 - 格式字符串沒有足夠的參數
- 30. 類型錯誤:沒有足夠的參數格式字符串
是的。它足夠長。 – 2015-02-10 22:36:59
http://stackoverflow.com/questions/584824/ – 2015-02-10 22:40:09