警告:“在堆上分配的对象可能不对齐32”但结构未声明对齐,它只包含对齐类型

时间:2016-08-17 19:05:49

标签: c++

我正在使用具有对齐类型的库,并且我有一个包含这些类型之一的数组的结构。我的编译器(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派生来解决这个问题,但是会覆盖新派生类型和删除派生类型的工作,还是只需要手动对齐类(添加填充到最后)?

0 个答案:

没有答案