首頁 > 後端開發 > C++ > `std::string::c_str()` 指標保持有效多久?

`std::string::c_str()` 指標保持有效多久?

DDD
發布: 2024-12-12 16:38:17
原創
504 人瀏覽過

How Long Do `std::string::c_str()` Pointers Remain Valid?

std::string::c_str() 結果的生命週期

問題:

問題:
{
  std::string server = "my_server";
  std::string name = "my_name";

  Foo foo;
  foo.server = server.c_str();
  foo.name = name.c_str();

  // use Foo

  // Foo about to be destroyed (before name and server)
}
登入後複製

問題:

問題:

問題:

問題:問題:問題:問>在與使用const char在指標的遺留程式碼介面的程式中,開發人員查詢std::string::c_str() 結果。他們特別詢問以下程式碼片段是否安全:答案:std::string::c_str() 結果的生命週期取決於字串的生命週期以及任何後續修改。如果字串被修改或破壞,結果將無效。因此,當打算儲存結果以供將來使用時,通常會建議複製結果。 在提供的程式碼片段中,std::strings(伺服器和名稱)在以下範圍內建立和修改:程式碼區塊。 c_str() 結果(foo.server 和 foo.name)指向這些暫存 std::string,它們在作用域結束時被銷毀。 但是,這些字串不會在作用域之外使用,這使得在 use_foo() 和 ~Foo() 中繼續使用 const char 指標在技術上是安全的。但是,如果這些函數可能將指標複製到其他位置,則應進行真正的複製,而不是簡單地複製指標。 因此,雖然程式碼片段在這種特定情況下展示了技術上正確的行為,但良好的編碼實踐將如果需要儲存c_str() 結果以供以後使用,則需要複製c_str() 結果。

以上是`std::string::c_str()` 指標保持有效多久?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板