gpt4 book ai didi

c - 整页 Malloc

转载 作者:太空狗 更新时间:2023-10-29 15:14:07 25 4
gpt4 key购买 nike

我试图通过一次使用整个页面来优化我的程序的内存分配。

我像这样获取页面大小:sysconf(_SC_PAGESIZE); 然后像这样计算适合页面的元素总数:elements=pageSize/sizeof(Node );

我在想,当我真正去 malloc 我的内存时,我会使用 malloc(elements*sizeof(Node)); 似乎 sifeof(Node) 的乘法和除法会抵消,但对于整数除法,我不认为是这种情况。

这是一次 malloc 整个页面的最佳方式吗?

谢谢

最佳答案

malloc 函数没有任何页面大小的概念。除非您分配的页面也与页面边界对齐,否则以这种方式调用 malloc 不会给您带来任何好处。只需 malloc 所需的元素即可,不必再担心微优化几乎肯定不会给您带来任何好处的东西。

是的,Linux 内核一直在做这样的事情。原因有二:

  1. 您不希望分配比页面大的​​ block ,因为这会显着增加分配失败的风险。
  2. 内核分配是在每页的基础上进行的,而不是像 C 库那样一次性分配大量内存,然后将其拆分成小的组件。

如果你真的想分配页面大小的内存,那么使用 sysconf(_SC_PAGESIZE) 的结果作为你的大小参数。但几乎可以肯定的是,您的分配跨越了两页。

关于c - 整页 Malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com