Могу ли я клонировать байты объекта C++, перезаписать исходные байты, а затем скопировать эти байты обратно?

Это чисто гипотетически, но я не уверен, приведет ли следующий код к неопределенному поведению в соответствии со спецификацией C++. Я хотел бы сделать копию байтов в объекте, взорвать объект, перезаписав его нулями, а затем скопировать старые байты обратно. Могу ли я сделать это, не вызывая неопределенного поведения?

Пример кода:

NonPODType o;
char bytes[sizeof(o)];

memcpy(bytes, &o, sizeof(o));
memset(&o, 0, sizeof(o));
memcpy(&o, bytes, sizeof(o));
7
задан GEOCHET 10 August 2015 в 16:38
поделиться