相关疑难解决方法(0)

为什么不保证memcpy对非POD类型是安全的?

我从SO上发布的一些问题中读到了这一段.

我无法弄清楚为什么memcpy不保证非POD类型的安全性.我的理解是,这memcpy只是一个有点明智的副本.

以下是标准报价

对于任何对象(比基类的其他子对象)的POD类型T,所述对象是否保持类型的有效的值T,构成对象的底层字节(1.7)可以被复制到的阵列charunsigned char0.41)如果阵列的内容charunsigned char将被复制回对象,该对象随后应保持其原始值.

# define N sizeof (T)
char buf[N];
T obj ; // obj initialized to its original value
std :: memcpy (buf , & obj , N); // between these two calls to std::memcpy,
                                 // obj might be modified
std :: memcpy (& obj , buf , N); // at this point, each subobject of obj of …
Run Code Online (Sandbox Code Playgroud)

c++

10
推荐指数
2
解决办法
2844
查看次数

标签 统计

c++ ×1