未初始化的数据和memcpy

时间:2012-11-02 07:48:26

标签: c++ char

迈克米勒在240. Uninitialized values and undefined behavior中说:

  

3.9.1 [basic.fundamental]中的措辞经过精心设计,允许使用unsigned char访问未初始化的数据,以便memcpy等可以用C ++编写而不会出现未定义的行为

这是什么意思?为什么要访问未初始化的数据?

2 个答案:

答案 0 :(得分:1)

当您复制包含填充的struct时,memcpy也会复制填充。通常,填充是未初始化的。

答案 1 :(得分:0)

这意味着仍然可以访问未由对象构造函数初始化的内存(这是C ++的用途)。我们可以使用 unsigned char (或byte)来指向原始内存块。

对象是您应该处理的对象,但您仍然可以按原样查看内存。