C++11 中的动态对齐内存分配

2023-11-26

posix_memalign and _aligned_malloc在 Windows 上允许动态分配对齐的内存块。 C++11中有类似的东西吗?据我所知,alignas关键字仅适用于静态分配的对象。


这取决于您需要什么对齐方式。对于任何 alignof(std::max_align_t), new按照 n3242 3.7.4.1/2 工作:

返回的指针应适当对齐,以便可以 转换为具有基本功能的任何完整对象类型的指针 对齐要求

std::max_align_t是具有最严格基本对齐的完整对象类型。

请注意,数组的分配char or unsigned char但不是signed char5.3.4/10 中有不同的规则:

对于 char 和 unsigned char 数组,结果之间的差异 new 表达式和分配返回的地址 函数应为最严格基本函数的整数倍 任何尺寸为 no 的对象类型的对齐要求 (3.11) 大于正在创建的数组的大小。

So new char[1];对齐方式可以为 1。

至于分配内存的对齐方式大于alignof(std::max_align_t),C++11 没有提供直接的方法来执行此操作。唯一可靠的方法是至少分配size + alignment字节和使用标准::对齐以获得此缓冲区中正确对齐的位置。

这可能会浪费大量内存,因此如果您需要大量内存,您可以创建一个分配器,为所有内存分配足够大的块,并在其上使用 std::align 。然后,您的管理费用将在所有分配中摊销。

您的另一个选择是等待http://open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3396.htm使其成为标准。

就我个人而言,我只会在操作系统提供的 API 上编写一个抽象层来分配对齐的内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++11 中的动态对齐内存分配 的相关文章

  • 在静态断言和运行时错误之间自动选择

    我有一个执行除法并检查对齐的宏 define BYTES TO WORDS x CHECK ALIGNMENT x 2 x 2 我想实施CHECK ALIGNMENT作为一个总是返回 1 的宏 并且如果满足以下条件则触发错误x不除以 2 宏
  • 如何使用 saxon 将文档类型参数传递给 xslt?

    对于发送原子数据类型将使用类似 transformer SetParameter new QName customXml new XdmAtomicValue true 如何将 XML Node 作为参数从 C 传递给 XSLT 你能帮我么
  • 实体框架 5 不清除导航属性

    我在 Entity Framework 5 中遇到了这个奇怪的问题 我在其中一个实体中有一个导航属性 我想将其设置为null 但由于某种原因 该属性只有在我第二次调用该属性时才会被清除 using var db new Entities v
  • 如何在 asp .net mvc 2 中对不直接属于我的模型的对象使用 DisplayFor()?

    我确信我在这里遗漏了一些非常简单的东西 我创建了一个自定义日期时间显示模板 使用以下方法时效果很好 但是 我遇到了这样的情况 在部分控件内 我在 for 循环中迭代模型中的对象 我想要一个 DateTime 属性来使用显示模板 但我不知道如
  • 混合 VS2012 平台工具集

    我们正在从 VS2005 切换到 VS2012 update 2 我们正在构建大量 主要是控制台 本机 C 无 MFC ATL 可执行文件 它们使用几个常见的静态链接库 这些可执行文件主要在 Win7 计算机上运行 但有些也部署在较旧的 X
  • 如何使用 ASP.NET MVC 4.0 DonutOutputCache VaryByCustom 使缓存失效

    我正在为我的 ASP NET 应用程序使用 DevTrends MvcDonutCaching 包 它工作得很好 我目前遇到的一个问题是使我为子操作设置的 VaryByCustom 缓存无效 这是我用于 VaryByCustom 设置的一些
  • 如何解决素数函数的大O表示法?

    我正在尝试理解 Big O 表示法 很抱歉 如果我问的问题太明显了 但我似乎无法理解这一点 我有以下 C 代码函数 我正在尝试为其计算 Big O 表示法 for i 2 i lt 100 i for j 2 j lt i j j if i
  • MSBuild 将动态生成的文件复制为项目依赖项的一部分

    我有一个自定义 msbuild 任务 它正在生成一些输出文件到 ProjectA 的输出目录 TargetDir 当前的代码是这样的
  • 当应用程序未聚焦时监听按键

    我有一个应用程序 C 4 0 WPF 它是隐藏的 可以通过单击系统托盘图标或我创建的其他框架 停靠在左侧和最上面的小框架 来显示 My customer wants to add a new way to display the appli
  • C#中如何将委托转换为对象?

    我正在使用反射类来调用其他 dll 上的一些方法 方法的参数之一是委托类型 我想通过使用反射来调用这个方法 所以我需要将函数参数作为对象数组传递 但我找不到任何关于 如何将委托转换为对象 提前致谢 委托是一个对象 只需像平常一样创建预期的委
  • 通过 Nuke.Common/NuGet.CommandLine 部署 NuGet 包时如何通过 Azure Auth

    我正在尝试通过 Azure DevOps 上的 Nuke 和 CI CD 自动执行 NuGet 包更新 一切都构建得很好 但在 PushNuGet 步骤中 该过程尝试通过弹出窗口向 Azure 进行身份验证 这显然从未在 in devops
  • 将 libpng 链接到 android 原生项目

    我在尝试在本机 Android 项目中加载 libpng 时遇到问题 编译器似乎无法识别 libpng 函数 但可以识别类型 如 png byte 它可以正常编译类型 但如果我添加函数 则会抛出错误 这是编译输出 Windows 7 cmd
  • Facebook Graph API“/userid/feed”返回空白

    我正在使用 Facebook C SDK 但似乎无法使用 Graph API 获取反馈数据 我已从用户那里获得了以下扩展权限 范围 离线访问 publish stream publish checkins create event read
  • std::regex 转义正则表达式中使用的特殊字符

    我是字符串来创建一个std regex FILE 作为单元测试的一部分 检查一些打印文件名的异常输出 在 Windows 上失败并显示 regex error error escape 表达式包含无效的转义字符或尾随转义 因为 FILE 宏
  • 如何在OpenGL中像这样绘制连接的带状线

    我想用以下方式绘制一系列连接线 GL LINE STRIP 我尝试过自己编写代码 但没有得到想要的结果 所以我来到这里 帮助我找出我错在哪里 这里我只给出我的draw 函数 glBegin GL LINE STRIP glVertex2f
  • 正则表达式基于组的不同替换?

    所以我对正则表达式比较陌生 并且做了一些练习 我正在玩一个简单的 混淆器 它只是寻找 dot or dot or at or at 不区分大小写 并且在匹配项之前或之后有或没有任意数量的空格 这是针对通常情况的 someemail AT d
  • STL 向量、迭代器和插入 (C++)

    我有一个将向量的迭代器传递到的方法 在这个方法中 我想向向量中添加一些元素 但我不确定当只有迭代器时这是否可行 void GUIComponentText AddAttributes vector
  • 为 C++ 类播种 rand()

    我正在开发一个 C 类 它使用rand 在构造函数中 我真的希望这个班级在几乎所有方面都能照顾好自己 但我不知道在哪里播种rand 如果我播种rand 在构造函数中 每次构造我的对象类型的新实例时都会对其进行播种 因此 如果我按顺序创建 3
  • Android NDK - 仅用 C/C++ 编写

    有没有一种可能的方法可以使用 C C 编写整个 NDK 应用程序 而无需像 hello jni 示例项目 HelloJni java 中那样的 Java 入门 类 以某种方式创建一个 HelloJni c 来执行相同的操作 从 Androi
  • GetActiveObject() 与 GetObject() -- MK_E_UNAVAILABLE 错误

    All 我在将一些 VBA 代码转换为 C 时遇到一些问题 我们有一个充当本地 COM 服务器的第 3 方应用程序 在我们使用的VBA代码中获取对象 获取对现有对象的引用 e g Set appHandle GetObject ProgId

随机推荐

  • 你现在如何在前端使用 es6 Promise?

    我正在尝试使用 babel 编译包含 es6 Promise 的文件 我已经安装了 babel cli babel preset es2015 babel plugin es6 promise 我的 babelrc 配置是 presets
  • 在 Eclipse 项目中链接名为“src”的外部源文件夹

    这不是关于在 eclipse java 项目中链接源的问题 是否可以在 eclipse 中添加一个名为 src 的外部文件夹作为源文件夹 这里的问题是将外部文件夹名称保留为 src 而不是任何其他名称 为此 我尝试从标准 eclipse j
  • UIScrollview 动画取决于内容偏移量

    我正在使用水平 UIScrollView 并且我想要根据内容偏移的 x 值进行背景颜色过渡 Example UIScrollView的宽度是640px 当内容偏移量等于0px时 背景颜色必须为红色 当内容偏移量为 320 px 时 背景必须
  • VB.NET 关键字“Is”与 Object.ReferenceEquals 相同吗?

    Is the IsVB NET 关键字与 Object ReferenceEquals 相同吗 是的 是的 除非与 TypeOf 检查结合使用 引用自MSDN Is 运算符确定是否两个 对象引用指的是相同的 目的 然而 它不执行 价值比较
  • 有哪些技术可以绕过 IE 文件下载安全规则?

    Internet Explorer 使用默认设置 我通常认为这将在 Great Unwashed 的桌面上生效 似乎不喜欢在 HTTP 响应中接受附件内容的想法 如果相应的请求不是直接从用户操作发出的 就像 点击 处理程序或本机表单提交 可
  • Raku rebless 不再适用于继承类

    该线程中给出的代码不再起作用 如何在 Perl 6 中重新定义对象 这段代码是我去年写的 当时就有效了 现在它没有 class Person class Woman is Person my tom Person new my lisa W
  • 重定向到 Node.js 中的不同页面 url(不在 Express 或其他框架中)

    我想将用户从 Node js 中的一个页面重定向到另一个页面 普通 Node js 现实生活场景 注册后 example com sigup 成功注册后我想将用户重定向到登录页面 example com login if signUpSuc
  • 如何在 SignalR 2.x 单元测试框架中向模拟客户端添加组支持?

    我正在使用 Moq 为我的 SignalR 2 x 应用程序构建一个 UnitTest 框架 我目前正在通过以下方式嘲笑我的客户 var mockClients new Mock
  • 将 Xcode 7 与 iOS 10 结合使用

    我想在 iOS 10 中使用 Xcode 7 据我了解 使用 iOS 10 beta 需要 Xcode 8 beta 所以我应该升级我的 Xcode 但是 我的代码无法由新编译器构建 因此我想继续使用 Xcode 7 我怎样才能做到这一点
  • 如何使用 Hibernate 注释在连接表上创建索引?

    我使用 Hibernate 注释有如下关系 这是我尝试过的 public class Job OneToMany cascade CascadeType ALL JoinTable name jobs resource locations
  • 使用 pandas read_csv 时出现内存错误

    我正在尝试做一些相当简单的事情 将一个大的 csv 文件读入 pandas 数据帧 data pandas read csv filepath header 0 sep DELIMITER skiprows 2 该代码要么失败 并显示Mem
  • 最小成本流 - R 中的网络优化

    我正在尝试实施一个 最低成本网络流量 交通问题解决方案R 我知道这可以使用类似的东西从头开始实现lpSolve 不过我发现有一个方便的igraph实施 最大流量 这样一个预先存在的解决方案会方便很多 但我找不到最小成本的等效函数 有没有一个
  • 如何让 JTable 标题显示整个列名而不是缩短它们?

    我有一个 JTable 其中填充了一个扩展 AbstractTableModel 的类 问题是列太短而无法显示列名称 我已经关闭了 Jtable AutoResizeMode 属性 但缩短仍然发生 我该如何解决这个问题 您可以使用桌柱调节器
  • 从 Bash 目录中读取文件名

    我需要编写一个脚本 从目录中读取所有文件名 然后根据文件名 例如 如果它包含 R1 或 R2 它将连接所有包含的文件名 例如名称中的 R1 谁能给我一些如何做到这一点的提示 我唯一能做的就是 bin bash FILES path to t
  • 使用 boto3 列出具有特定应用程序标签的自动缩放组名称

    我试图获取应用程序标记值为 CCC 的自动缩放组 名单如下 gweb prd dcc eap w2 gweb prd dcc emc gweb prd dcc ems CCC dev ccc wer CCC dev ccc gbg CCC
  • Facebook Graph API 覆盖显式设置的隐私设置

    我在为我的应用程序代表用户创建的帖子设置隐私时遇到问题 问题是 所有帖子的隐私值都被 Graph API 设置为 ALL FRIENDS 即使我明确将隐私值设置为 EVERYONE 这是我用来提交的代码 query message urle
  • iOS启动后台线程

    我的 iOS 设备中有一个小型 sqlitedb 当用户按下按钮时 我从 sqlite 获取数据并将其显示给用户 我想在后台线程中执行此获取部分 以免阻塞 UI 主线程 我这样做 self performSelectorInBackgrou
  • 具有本地作用域的 PHP 常量

    在 PHP 中是否可以有局部作用域的常量 是的 请提供一个小例子 是的 但只使用一个类 class Foo const BAR hello world print Foo BAR 关于 Kalium 的评论 如果你使用 PHP 5 3 你确
  • 何时使用 URL/会话/cookie 变量?

    我做了很多 php 和 javascript 但我认为这是一个相对与语言无关的问题 是否有关于何时使用以下各项的最佳实践 网址变量 会话变量 cookies 我了解其中一些的固有局限性can t确实如此 但似乎它们的用途有时也可以重叠 并且
  • C++11 中的动态对齐内存分配

    posix memalign and aligned malloc在 Windows 上允许动态分配对齐的内存块 C 11中有类似的东西吗 据我所知 alignas关键字仅适用于静态分配的对象 这取决于您需要什么对齐方式 对于任何 alig