使用 memcpy 构造可简单复制的对象
使用 C 时,开发人员可能会遇到有关使用 memcpy 复制对象的有效性的问题对象的表示字节。具体来说,会产生这种行为是否构成对象构造或赋值的疑问。
这个问题仍未解决,因为 C 标准没有明确解决这种情况。然而,某些提案和讨论为此事提供了指导。
官方标准的视角
当前的 C 14 草案标准指出:“创建一个对象 [.. .] 通过定义、新表达式或需要时的实现。”
此外,解决简单可复制类型的复制(例如,3.9 [basic.types])主要关注已实例化对象之间的复制。
提案 p0593
提案 p0593 试图解决这个问题并定义了低级对象操作的对象的隐式创建。它建议在新分配的存储中自动创建足够简单类型的对象,以确保良好定义的行为。
根据 p0593,以下操作应隐式创建对象:
其他注意事项
关于 [ub] 类型双关以避免复制的讨论进一步凸显了复杂性
总体而言,当前有关此主题的指南可以解释,但诸如 p0593 之类的提案旨在为这些操作提供清晰度和定义的行为。
以上是memcpy 可以用于在 C 中构造可简单复制的对象吗?的详细内容。更多信息请关注PHP中文网其他相关文章!