【问题标题】:Is it safe to memcpy struct with arrays and some methods?使用数组和某些方法来 memcpy 结构是否安全?
【发布时间】:2015-11-16 21:28:40
【问题描述】:

我想知道在包含数组和方法的结构上使用 memcpy 是否安全(只是一些 getter 和 setter,因为数组的索引是不寻常的,我必须以某种方式映射它)。我知道它对 POD 是安全的,但我不确定我的结构是否会被视为 POD?

【问题讨论】:

标签: c++ arrays struct


【解决方案1】:

如果structTriviallyCopyable,您可以使用memcpy

您可以使用std::is_trivially_copyable 检查您的struct 是否可以轻松复制。

另外,正如@JohanLundberg 在评论中指出的那样,目标地址必须是0std::alignment_of<T>。您可以在http://en.cppreference.com/w/cpp/language/object#Alignment 阅读有关对象对齐要求的更多信息。

【讨论】:

  • 有趣的是,这包括例如std::atomic<T> 或具有显式删除的复制语义的类型。
  • 对齐问题怎么办?您是否还需要确保目标是 0 模 std::alignment_of
猜你喜欢
  • 2018-07-11
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2023-04-07
  • 2011-07-08
  • 2011-07-11
  • 1970-01-01
相关资源
最近更新 更多