我正在使用具有对齐类型的库,并且我有一个包含这些类型之一的数组的结构。我的编译器(MSVC)抱怨标题中的错误消息(当我尝试动态分配它时引用我的结构)。
以下是来自Embree(Raytracing软件)的课程:
# define RTCORE_ALIGN(...) __declspec(align(__VA_ARGS__))
#ifndef __RTCRay8__
#define __RTCRay8__
struct RTCORE_ALIGN(32) RTCRay8
{
//data
}
我的结构看起来像这样:
struct ContainerThing
{
RTCRay8 ray_packets[SIZE_CONSTANT];
}
我是否正确地说因为RTCRay8数组在动态分配的类中,对齐保证会丢失?因此,阵列可能会错位?
如果发生了什么,我的问题是:解决方案是什么?看起来我需要从RTCRay8派生来解决这个问题,但是会覆盖新派生类型和删除派生类型的工作,还是只需要手动对齐类(添加填充到最后)?