如何在C中分配和释放对齐内存

2024-01-04

如何分配与 C 中特定边界(例如缓存行边界)对齐的内存?我正在寻找类似 malloc/free 的实现,理想情况下应尽可能可移植——至少在 32 位和 64 位架构之间。

编辑添加:换句话说,我正在寻找一些行为类似的东西(现在已经过时了?)memalign http://www.mkssoftware.com/docs/man3/memalign.3.asp函数,可以使用 free 来释放。


这里有一个解决方案,它封装了对 malloc 的调用,分配一个更大的缓冲区用于对齐目的,并将原始分配的地址存储在对齐缓冲区之前,以便稍后调用 free。

// cache line
#define ALIGN 64

void *aligned_malloc(int size) {
    void *mem = malloc(size+ALIGN+sizeof(void*));
    void **ptr = (void**)((uintptr_t)(mem+ALIGN+sizeof(void*)) & ~(ALIGN-1));
    ptr[-1] = mem;
    return ptr;
}

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

如何在C中分配和释放对齐内存 的相关文章

随机推荐

  • OpenFileMapping 问题,找不到文件映射

    我目前正在尝试使用文件映射来测试进程间通信 我的第一个程序 我将其称为生产者 在以下创建文件映射并写入文件映射的代码上不会出错 如下所示 hEvent CreateFileMapping INVALID HANDLE VALUE use p
  • 如何在 django-tastypie 中组合多个资源?

    假设我有三个模型 提交 联系和提交联系 class Submission models Model title models CharField max length 255 verbose name Title class Contact
  • 使用 RequestScoped Bean 和渲染属性的正确方法是什么?

    有人知道如何在 jsf 中将 RequestScoped bean 与渲染属性一起使用吗 呈现的属性是在 applyValues 阶段之前评估的 因此无法正确评估 我不想保留任何状态 该示例可以是带有数据表和按钮的outputPanel 数
  • 使用纯虚拟成员地址的虚拟呼叫。合法吗?

    我之前读过 可能是在 c l c moderated 上 虚拟函数调用可以模板化 我尝试了以下几行 include
  • 损坏的 R 代码用于选择文本文件中的特定行和单元格并将其放入数据框中

    这是一个扩展这个问题 https stackoverflow com questions 42513614 select specific rows and cells in text file and put into data fram
  • Android TextInputField 充气机错误

    尝试使用新版本时发生崩溃TextInputField对于 Android 并想分享我的解决方案 尝试 android appcompat 库中的新 TextInputField 导致我的应用程序崩溃 这是我的布局 xml
  • 在 IIS 上用 C# 输出到控制台

    我们正在尝试调试一些在 IIS 上用 C 运行的 Web 服务代码 我是 Windows 编程新手 不知道如何查看控制台的输出 我们在代码中有一些写入语句 但我不知道如何在这个东西运行时查看控制台 帮助 我发现跟踪功能非常有用 您可以通过以
  • Cordova 5.1.1 闪屏不工作

    我正在尝试让闪屏在我的 Android 设备 Redmi 1S Android 版本 4 4 4 KTU84P 上工作 该应用程序在我的设备上运行良好 但未出现启动画面 启动画面图像被复制并重命名为 screen png 到相应的 plat
  • 在 OpenAPI / Swagger 文件中声明日期的正确方法是什么?

    在 swagger 文件对象中声明日期的正确方法是什么 我认为是 startDate type string description Start date example 2017 01 01 format date 但我看到很多这样的声明
  • 如何使用Python将HTML代码复制到剪贴板?

    我正在尝试制作一个简单的脚本 在 Windows 10 上使用 python 将自定义文本超链接 示例 FakeSite com 复制到剪贴板 并且在粘贴时仍然将其识别为 HTML 与在 Microsoft Word 中复制自定义文本超链接
  • Android 在托管热点时查找设备的 IP 地址

    当设备托管热点时 我需要找到设备的 IP 地址 到目前为止我已经使用过这段代码 if is using Hotspot for Enumeration
  • 通过引入 T 常量将 Expression> 转换为 Expression>

    我有一个格式为的表达式Expression
  • Crontab 突然停止在服务器上工作?

    我在 Linux 平台上的服务器上设置了一些 crontab 在那 2 天之前 所有 cron 都在运行 我不知道 crontab 发生了什么 它们现在不工作 所有 cron 之前都在运行 之后我添加了一个新的 crontab 它们没有运行
  • HttpWebRequest 对象的诊断转储

    有没有什么好方法 除了繁琐地查询每个属性之外 在 C 中为 HttpWebRequest 构建诊断转储字符串 对于简单的对象 人们可以使用new JObject theObject 但这不适用于 HttpWebRequest 并且toStr
  • 使用 url 创建 yii2 动态页面:www.example.com/pageName

    在我的系统中 用户需要有他们的个人资料页面 我要求这些页面将显示在 url 中 如下所示 www example com John Doe www example com Mary Smith 如何在 yii2 中实现这些 URL 这些 J
  • 使用VBA获取word中的所有交叉引用

    我有一个相当大的 Word 文档 gt 400 页 其中有很多标题的交叉引用 到目前为止 我一直引用标题的标题 但现在我想更改它并引用标题所在的页面 我没有通过 GUI 找到解决方案 当然 手动处理除外 所以我正在考虑编写一些 VBA 不幸
  • XPATH获取text_1和text_2之间的所有节点

    我有这样的 HTML div text1 a link 1 a a link 2 a text2 a link 3 a text3 div 我想获取之间的所有节点text1 and text2 问题是没有p or span标签 只有纯文本
  • Google App Engine 在处理信号后终止:术语

    我有一个应用程序部署为 GCP 上的应用程序引擎 它调用 API 创建 Bytes IO 流并将数据上传到云存储 有 4 个文件 大约 44mb 需要上传 文件是 URL 列表 然后将其提供给数据流 但这并不重要 一开始 我为每个文件创建了
  • 带有负秒的奇怪 mktime 逻辑

    我一直在使用 mktime localtime 进行时间管理 包括一些关于日期 时间的繁重算术 当向 mktime 提供包含负值的 struct tm 时 我注意到一些非常奇怪的事情 采取下面的代码 2013 年 11 月 3 日 洛杉矶的
  • 如何在C中分配和释放对齐内存

    如何分配与 C 中特定边界 例如缓存行边界 对齐的内存 我正在寻找类似 malloc free 的实现 理想情况下应尽可能可移植 至少在 32 位和 64 位架构之间 编辑添加 换句话说 我正在寻找一些行为类似的东西 现在已经过时了 mem