std::string 在 C 11 中是否連續儲存並以 Null 結尾?
在先前的討論中,有人提出了有關記憶體的問題C 0x 中 std::string 的佈局和空終止。 Herb Sutter 提議出於並發原因要求空終止並禁止寫入時複製實作。
C 11 保證連續儲存
如問題中所提到的,C 11確保 std::string 內容連續儲存。然而,關於空終止的提案是否在 C 11 最終草案中被採納的問題仍然沒有答案。
C 11 中的空終止
根據C 11 標準[string.accessors] p1, std::basic_string::c_str()狀態:
「傳回一個指標p,對於[0,size()] 中的每個i,p i == &operator[](i),”
表示 s 回傳的指標。 c_str() 相當於字串中首字的位址 (&s[0])。因此,std::string 在 C 11 中保證以空終止。
使用含義
空終止保證意味著使用&str[ 是安全的0] 訪問C 11 中std::string 的第一個字符,確保與依賴此行為的遺留程式碼的相容性。
以上是C 11 中 std::string 是否連續儲存並以 Null 終止?的詳細內容。更多資訊請關注PHP中文網其他相關文章!