struct Point
{
double X;
double Y;
};
Q1)是以下可移植的(编译器/机器)
Point point = { 1.1, 2.2 };
double arr[2] = {};
memcpy(arr, point, sizeof(double)*2);
Q2)结构数组相同
Point *pPoints = new Point[numPoints];
double *pArr = new double[2*numPoints];
memcpy(pArr, pPoints, sizeof(double)*2*numPoints);
在 Windows/MSVC 上,我希望两者都能成功。
编辑:我不是对每个可能的结构/类都问这些问题;我要的是 struct "Point" 的这种特殊情况(注意:只有 2 个 pod,没有虚拟成员/用户构造函数/用户析构函数)。这也可能是一个 C 问题,它与跨编译器的结构对齐和内存布局有关。
到目前为止,我已经知道 c/c++ 标准对 Point 的布局没有强制要求,所以我必须自己使用静态断言来确保它,对吗?