私は最近、同僚の1人がこれに似た何かをしているのを見ました。
#include <iostream>
class myClass
{
public:
float X, Y;
myClass(int x, int y) : X(x), Y(y){}
};
int main()
{
char buffer[1024] = { 0 };
myClass example(12, 24);
memcpy(buffer, &example.X, sizeof(float) * 2); // Is this safe? Will X always be allocated next o Y?
}
基本的に、彼はメモリコピーにfloatの2倍のサイズを読み取るように指示することにより、X
との両方Y
を1つのステップですべてにコピーしようとしています。char[]
それは間違いなく機能し、通常、これはクールだと思い、先に進みます。しかし、C++では未定義の動作がすべてあるためです。これが常に機能することが保証されているかどうかを知りたいです。Yは常にXの直後に割り当てられますか?