alignas相关内容

将 operator new(sizeof(T) * N) 返回的内存视为数组

在 C 中,可以使用 malloc(sizeof(T) * N) 分配动态数组,然后使用指针算法获取动态数组中 i 偏移处的元素. 在 C++ 中,可以使用 operator new() 以与 malloc() 相同的方式执行类似操作,然后放置 new(例如,可以查看 item 的解决方案13 在 Herb Sutter 所著的“Exceptional C++:47 工程难题、编程问题和解决 ..
发布时间:2021-11-18 02:19:41 C/C++开发

常量缓冲区的aligned_malloc()和alignas()

在C ++中,我们有关键字 alignas(n)和 _aligned_malloc(m,n)函数. alignas 适用于该类型,而 aligned_malloc 适用于您所调用的任何类型. 我可以使用 alignas(16)满足Direct3D常量缓冲区的16字节对齐要求吗? 解决方案 是的,您可以像这样使用它: struct SceneConstantBuffer{aligna ..
发布时间:2021-05-31 19:48:35 其他开发

alignas()对sizeof()的影响-强制性吗?

该程序: struct alignas(4)foo {};int main(){返回sizeof(foo);} 返回4,GCC 10.1和clang 10.1,icc 19.0.1. 这让我感到疑惑-是否必须强制 alignas()这样影响 sizeof()?即将尺寸增加到超出结构最初尺寸的尺寸?或者-这种更改只是实现的特权吗? 解决方案 alignas()是否必须以这种 ..
发布时间:2021-04-20 18:45:43 C/C++开发

如何使用alignas替代实用套件?

我试图了解应该使用alignas的方法,我想知道它是否可以替代pragma pack,但我一直在努力验证它,但是没有运气.使用gcc 4.8.1( http://ideone.com/04mxpI ),对于以下STestAlignas,我总是会得到8个字节,而使用pragma pack则为5个字节.我想要的是使sizeof(STestAlignas)返回5.我尝试在clang 3.3( http: ..
发布时间:2021-04-20 18:33:03 C/C++开发

gcc过度对齐的新支持(alignas)

我很难找到有关GCC新对齐警告和gcc -faligned-new选项的更多信息.在gcc 7.2.0上编译(不带--std = c ++ 17),并尝试定义对齐的结构,例如: struct alignas(64) Foo { int x; } 只需做一个普通的老话: Foo * f = new Foo(); 给我以下警告和建议: alignas.cpp:36:25: ..
发布时间:2020-07-29 19:09:23 C/C++开发

对齐/偏移结构的特定成员

在结构内对齐成员的最佳或常规方法是什么? 添加虚拟阵列是最好的解决方案吗? 我有一个double的结构和一个double s的三倍? struct particle{ double mass; std::tuple position; } 如果我有一个这样的数组,内存将看起来像这样 [d][d d d][d][d ..
发布时间:2020-06-30 20:11:13 C/C++开发

将运算符new(sizeof(T)* N)返回的内存视为数组

在C语言中,可以使用malloc(sizeof(T) * N)分配动态数组,然后使用指针算法在该动态数组的i偏移处获取元素. 在C ++中,可以使用operator new()与malloc()相同的方式进行类似操作,然后放置新的内容(例如,可以在"Exceptional C ++:47个工程难题,编程问题,和解决方案".如果您没有,则此问题的解决方案摘要为: T* storage = ..
发布时间:2020-04-27 04:21:39 C/C++开发

挣扎与alignas语法

我试图使用 alignas 作为类成员的指针,坦白地说,我不知道我应该把它放在哪里。 例如: class A { private: int n; alignas(64)double * ptr; public: A(const int num):n(num),ptr(new double [num]) {} } 我希望可以确保ptr的数据在 ..
发布时间:2016-11-06 02:15:35 C/C++开发

在那里我可以在C ++ 11使用alignas()

在为了规范我的code,使之更便于携带,我换成 的#ifdef __GNUC__ 的typedef __attribute __((排列(16)))浮动aligned_block [4]; #其他 的typedef __declspec(调整(16))浮子aligned_block [4]; #ENDIF 与 的typedef浮动alignas(16)aligned_block [4] ..
发布时间:2015-11-30 23:25:28 C/C++开发