#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. 檢查字符串(TextView)是否沒有足夠空間
- 7. C++臨時對象的生命週期 - 是否安全?
- 8. 懸停不足長時間足夠
- 9. LayoutAwarePage的MVVM是否足夠?
- 10. 延長臨時對象的生命週期
- 11. UNIX`time`命令是否足夠滿足基準?
- 12. C++臨時對象的生命週期
- 13. 壽命的參考值盒裝不活足夠長的時間
- 14. Gmail是否足夠安全?
- 15. java.util.regexp是否足夠高效?
- 16. MinGW是否足夠穩定
- 17. shell腳本是否足夠?
- 18. uNhAddIns是否足夠活躍?
- 19. PHP是否足夠動態?
- 20. 這是否足夠安全?
- 21. 在C++中保證臨時生命期?
- 22. Android臨時文件 - 生命週期
- 23. 解析長字符串日期時間
- 24. 臨時壽命延長
- 25. 綁定到函數參數的引用是否會延長該臨時的生命週期?
- 26. 這段代碼是否創建一個臨時字符串?
- 27. 使用字符串::臨時串c_str的
- 28. NSMutableDictionary不夠堅持足夠長的時間
- 29. 這個iOS代碼是否會導致內存填滿足夠長的時間?
- 30. 是否有「沒有足夠的命令行參數例外」?
是的。它足夠長。 – 2015-02-10 22:36:59
http://stackoverflow.com/questions/584824/ – 2015-02-10 22:40:09