如何分配页大小对齐的内存?

2023-11-25

我需要分配应该与页面大小对齐的内存。我需要将这段记忆传递给ASM计算所有数据块的异或的代码。我需要这样做malloc().


您应该使用一些函数来实现此目的。

如果出于某种原因不能,那么通常完成的方法是将块大小添加到分配大小,然后使用整数数学技巧对指针进行舍入。

像这样的东西:

/* Note that alignment must be a power of two. */
void * allocate_aligned(size_t size, size_t alignment)
{
  const size_t mask = alignment - 1;
  const uintptr_t mem = (uintptr_t) malloc(size + alignment);
  return (void *) ((mem + mask) & ~mask);
}

这还没有经过非常深入的测试,但你已经明白了。

请注意,不可能找出正确的指针free()以后的记忆。为了解决这个问题,我们必须添加一些额外的机制:

typedef struct {
  void *aligned;
} AlignedMemory;

AlignedMemory * allocate_aligned2(size_t size, size_t alignment)
{
  const size_t mask = alignment - 1;
  AlignedMemory *am = malloc(sizeof *am + size + alignment);
  am->aligned = (void *) ((((uintptr_t) (am + 1)) + mask) & ~mask);
  return am;
}

这稍微包装了指针技巧,并为您提供了一个指针,您可以free(),但是您需要取消引用aligned指针以获得正确对齐的指针。

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

如何分配页大小对齐的内存? 的相关文章

随机推荐

  • 列表视图中的单选按钮

    我在列表视图格式中显示刺痛列表 我使用默认列表视图并使用放置了一个单选按钮simple list item single choice 但这在右侧显示了单选按钮 我想在左侧显示单选按钮 是否可以使用默认列表视图在左侧显示单选按钮 simpl
  • 实现Hadoop的Writable接口的枚举值

    假设我有一个枚举 public enum SomeEnumType implements Writable A 0 B 1 private int value private SomeEnumType int value this valu
  • selectedIndex 在回发期间丢失 - ASP.NET

    我有一个列表框控件
  • iOS 在提交应用程序之前链接到应用程序商店

    我正在为我的 iPhone 应用程序构建一个 关于 控制器 我看到其他应用程序成功地将 市场价格 链接包含在其 关于 控制器中 我是否可以预测我的链接是什么 以便我可以在应用程序的第一个版本中对其进行硬编码 而不是上传 找出链接 发布更新
  • 元刷新重定向到顶部框架

    我有以下代码 Body of this page 这是行不通的 我用谷歌搜索了这个并得出了相同的结论 这应该有效 但事实并非如此 任何人都可以帮我解决
  • 如何在 Rails 中构建由多个模型组成的 JSON 响应

    一 想要的结果 I have User and Item楷模 我想构建一个如下所示的 JSON 响应 user username Bob foo whatever bar hello items id 1 name one zim plan
  • 在 JavaScript 中加入 2 个“线程”

    如果我有一个 ajax 调用关闭获取 通过回调 然后同时运行一些其他代码 当前两个函数完成后 我怎样才能有第三个函数被调用 我确信轮询很容易 setTimeout 然后检查一些变量 但我宁愿回调 是否可以 您可以为 AJAX 调用和同时运行
  • 你能将冒泡排序表述为幺半群或半群吗?

    给出以下冒泡排序的伪代码 procedure bubbleSort A list of sortable items repeat swapped false for i 1 to length A 1 inclusive do if th
  • OutputCache VaryByCustom cookie 值

    有没有办法根据 cookie 值设置 OutputCache 的值 为了简单起见 这是我的方法 OutputCache Duration 600 VaryByParam None VaryByCustom ztest public View
  • std::call_once 是阻塞调用吗?

    我在用着std call once在我的代码中仅初始化一些共享变量一次 调用代码位于由多个线程触发的回调内 我有兴趣知道 因为我在文档中找不到它是否std call once本质上是阻塞的 就好像有一个std lock guard反而 实际
  • 根据TextWrapping属性获取TextBlock的行数?

    我有一个TextBlock在WPF应用程序中 The Text Width Height TextWrapping FontSize FontWeight FontFamily 这个的属性TextBlock是动态的 由用户在运行时输入 每次
  • fetch() 输入意外结束

    我正在使用 fetch 从 api 服务器获取数据 我的错误看起来像这样 Uncaught in promise SyntaxError Unexpected end of input at fetch then blob 你能告诉我我做错
  • 在 if...else 语句中嵌入 case 标签

    G 接受这段代码 它的行为正如我所期望的那样 include
  • 给定一个代表某个值频率的 pandas 系列,我如何将这些频率转换为百分比?

    我正在尝试 kaggle com 泰坦尼克号数据集 泰坦尼克号上每个人的数据 并得出如下性别细分 df pd DataFrame sex male 577 female 314 gender df sex value counts gend
  • 在 ASP.NET MVC 2 中将视图呈现为字符串

    我们需要渲染一个ActionResult to a string将页面添加到我们的内部搜索引擎索引中 我们决定这个解决方案渲染为字符串 我遇到了一个问题ExecuteResult用于处理视图的调用 代码片段 var oldControlle
  • 将文本文件作为 clob 加载到数据库

    将文本文件作为 clob 加载到数据库时出现问题 Oracle 版本 Oracle Database 11g EE 版本 11 2 0 2 0 NLS LANG RUSSIAN RUSSIA CL8MSWIN1251 NLS CHARACT
  • 匿名类型的 IQueryable

    我使用 EntityFramework 使用匿名类型查询和返回部分数据 目前我正在使用IQueryable
  • MKPointAnnotations 快速触摸事件

    我想知道是否有人可以告诉我如何触摸map形式为MKPointAnnotations 我想点击pin on the map并通过返回来转到另一个视图variables of the pin我已经预设了 谁能向我解释一下这件事Swift tha
  • 使 .NET WebBrowser 不与 IE 或其他实例共享 cookie

    由于 C 中的 WebBrowser 与包括 IE 在内的所有其他 WebBrowser 实例共享 cookie 我希望 WebBrowser 拥有自己的 cookie 容器 该容器不共享以前在 IE 或其他实例中创建的任何 cookie
  • 如何分配页大小对齐的内存?

    我需要分配应该与页面大小对齐的内存 我需要将这段记忆传递给ASM计算所有数据块的异或的代码 我需要这样做malloc 您应该使用一些函数来实现此目的 如果出于某种原因不能 那么通常完成的方法是将块大小添加到分配大小 然后使用整数数学技巧对指