首頁 > 後端開發 > C++ > memcpy 可以用於在 C 中建構可簡單複製的物件嗎?

memcpy 可以用於在 C 中建構可簡單複製的物件嗎?

Mary-Kate Olsen
發布: 2024-11-19 20:32:02
原創
642 人瀏覽過

Can memcpy be Used to Construct a Trivially-Copyable Object in C  ?

使用memcpy 構造可簡單複製的物件

使用C 時,開發人員可能會遇到有關使用memcpy 複製物件的有效性的問題對象的表示位元組。具體來說,會產生這種行為是否構成物件構造或賦值的疑問。

這個問題仍未解決,因為 C 標準沒有明確解決這種情況。然而,某些提案和討論為此事提供了指導。

官方標準的視角

目前的C 14 草案標準指出:「建立一個物件[.. .] 透過定義、新表達式或需要時的實現。

提案 p0593

提案 p0593 嘗試解決此問題並為低階物件操作定義物件的隱式建立。它建議在新分配的儲存中自動建立足夠簡單類型的對象,以確保良好定義的行為。

根據p0593,以下操作應隱式建立物件:

建立char、unsigned char 或std::byte
  • malloc、calloc、realloc、operator new 、operator new[]
  • std::allocator::allocate
  • memmove(將來源儲存複製到暫時區域後)
  • 其他注意事項

關於[ub] 類型雙關以避免複製的討論進一步凸顯了複雜性

總體而言,當前有關此主題的指南可以解釋,但諸如p0593 之類的提案旨在為這些操作提供清晰度和定義的行為。

以上是memcpy 可以用於在 C 中建構可簡單複製的物件嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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