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

2023-12-05

在C++中,我们有关键字alignas(n)我们有_aligned_malloc(m,n)功能。
alignas作用于类型,同时aligned_malloc无论你怎么称呼它,都可以工作。
我可以用吗alignas(16)满足 Direct3D 常量缓冲区的 16 字节对齐要求?


是的,你可以这样使用它:

struct SceneConstantBuffer
{
    alignas(16) DirectX::XMFLOAT4X4 ViewProjection[2];
    alignas(16) DirectX::XMFLOAT4 EyePosition[2];
    alignas(16) DirectX::XMFLOAT3 LightDirection{};
    alignas(16) DirectX::XMFLOAT3 LightDiffuseColor{};
    alignas(16) int NumSpecularMipLevels{ 1 };
};

行不通的是__declspec(align)...

EDIT:如果你想在结构本身上使用它,类似这样的东西也应该起作用:

struct alignas(16) SceneConstantBuffer
{
    DirectX::XMMATRIX ViewProjection; // 16-bytes
    ...
    DirectX::XMFLOAT3 LightDiffuseColor{};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常量缓冲区的aligned_malloc() 与alignas() 的相关文章

  • 在不同的函数中分配的空闲内存?

    我正在尝试学习 C 目前正在尝试编写基本的堆栈数据结构 但我似乎无法掌握基本的知识malloc free right 这是我一直在使用的代码 我只是在这里发布一小部分来说明特定问题 而不是全部代码 但错误消息是通过运行此示例代码生成的val
  • 为什么在初始化结构时出现段错误?

    找了一圈一小时 我想我最好在这里发布问题 我简化了代码 段错误在函数中initMyStruct include stdlib h typedef struct int arr1 int arr2 myStruct void allocMyS
  • 除了 malloc/free 之外,程序还需要操作系统提供其他东西吗?

    我正在为我正在开发的操作系统设计内核 我实际上将其称为 核心 只是为了有所不同 但它基本上是相同的 如果我无法启动和运行多任务处理 内存管理和其他基本功能 那么操作系统本身的细节就无关紧要了 所以我需要首先解决这个问题 我有一些关于设计 m
  • 如何用c语言编写一个简单的malloc函数

    作为操作系统的作业 我们必须用 C 编程语言编写自己的 malloc 和 free 代码 我知道如果我要求它的代码 我就没有必要学习 我面临的问题是不知道在哪里包含初始化 50000 字节的 char 数组并使两个列表空闲和使用 在我的函数
  • alloca 函数崩溃,但 malloc 正常

    请解释一下崩溃的原因 我的第 3 方代码意外崩溃并出现 EXC BAD ACCESS static int overwrite selector struct srm target srm MARFileRemoverProgressBlo
  • 将运算符 new(sizeof(T) * N) 返回的内存视为数组

    在 C 中 可以使用以下方式分配动态数组malloc sizeof T N 然后使用指针算术获取此动态数组中位于 i 偏移量的元素 在 C 中 可以使用类似的方法operator new 在相同的方式malloc 然后放置新的 例如 可以在
  • 如何知道使用的是哪个malloc?

    据我了解 存在许多不同的 malloc 实现 dlmalloc 通用分配器 ptmalloc2 glibc jemalloc FreeBSD 和 Firefox tcmalloc 谷歌 libumem Solaris 有什么方法可以确定我的
  • 与alignas语法作斗争

    我正在尝试使用alignas对于属于类成员的指针 坦率地说 我不确定应该把它放在哪里 例如 class A private int n alignas 64 double ptr public A const int num n num p
  • Xcode 4:由于 iPad 模拟器的 dylib 错误,无法使用启用 Guard Malloc

    在 Xcode 4 x 中 我已将运行方案编辑为 启用 Guard Malloc 因为我有一个需要追踪的不伦不类的 malloc 错误 我知道我需要在模拟器中运行才能使用此功能 然而 当我这样做时 应用程序立即冻结 并且 Xcode 向我显
  • C语言中如何释放内存?

    我正在编写具有大量一维和二维数组的代码 我收到 错误 无法分配区域 我认为这是因为分配了太多内存 我使用 malloc 和 free 函数 但我不确定我是否正确使用它们 也许你知道我在哪里可以看到关于 C 内存管理的好例子 所以 我只是想让
  • C 语言快速联合实现中的分段错误(核心转储)

    include
  • malloc + size_t * 3 的地址对于任何类型都是对齐的吗?

    我正在构建一种动态数组 向量 但不是嵌入数据 通常是void 变成struct vector 我正在预留空间struct vector 一大块字节 使用数组的示例size t s include
  • git add 错误:“致命:malloc,内存不足”

    当我尝试执行 git add 时 出现错误 致命 malloc 内存不足 我想系统显然已经耗尽了内存 但是有没有办法解决这个问题 我还运行 Windows Server 2003 并使用 msysGit 编辑 经过更多搜索后 我认为这是 g
  • 我真的需要 malloc 吗?

    据我了解 malloc是用来动态分配内存的 在我的代码中 我有时会调用以下函数 int memory get log unsigned char day unsigned char date unsigned char month char
  • 如何从 .t​​xt 文件中读取已知数量的未知大小的字符串并将每一行存储在矩阵的一行中(在 C 中)?

    标题是不言自明的 我几乎可以肯定 最终结果不会是一个矩阵 因为每行都有不同数量的列 所以它更像是可变大小的数组的数组 按大小对片段进行排序 最大的在前 也很有趣 这是我到目前为止所尝试过的 int main char str MAXLEN
  • 堆内存和Slab分配

    我很困惑heap and free list 我有几个问题 我对C中malloc的工作原理有自己的理解 如果我错了 请纠正我 堆内存是否被组织为数据的链表 空闲列表 块 堆内存和空闲列表有区别吗 我对存储分配的理解 有待改进 当我们调用ma
  • C中的内存使用问题

    请帮忙 操作系统 Linux 其中 sleep 1000 中 此时 top 显示Linux任务 给我写了7 7 MEM使用 valgrind 未发现内存泄漏 我明白 写得正确 所有 malloc 结果都是 NULL 但是为什么这次 睡眠 我
  • alignas() 对 sizeof() 的影响 - 强制吗?

    这个程序 struct alignas 4 foo int main return sizeof foo 返回 4 其中 GCC 10 1 和 clang 10 1 以及 icc 19 0 1 这让我想知道 这是强制性的alignas 影响
  • 如何解决malloc_error_break?

    我在 iOS 3 0 模拟器上遇到此错误 但在 3 1 3 和 3 2 模拟器上没有遇到此错误 创建符号断点后malloc error break 我在日志中看到了这一点 Session started at 2010 02 13 19 1
  • 如何释放字符指针数组?

    我使用此方法将列表中的值转换为数组 以便在 execvp 系统调用中使用 char list2argarray struct shellvalue values int count char array char malloc count

随机推荐