【发布时间】:2020-12-26 18:17:29
【问题描述】:
我正在尝试使用alloc crate 进行自己的内存分配。我实现它的方式,如果我理解 Layout 的工作原理,下面的行应该得到我想要分配的字节大小作为第一个参数,以及一个要四舍五入的值作为第二个参数。因此,在我的示例中,我想分配 20 个字节,因为我传递了该值,所以将四舍五入为 4096。然后 alloc 将分配该内存并返回一个指向我分配开始的指针。
let pr = alloc(Layout::from_size_align(20, 4096).unwrap());
我对功能的理解是否正确?另外,有没有办法检查指定的字节数是否已经分配?
【问题讨论】:
-
我不太确定问题是什么,但 4096 的对齐非常非常大。四舍五入是什么意思?
-
每次分配中的舍入将是 4096 的倍数,具体取决于输入大小。所以在本例中,20 将四舍五入为 4096 并分配 4096 B,如果大小为 5000,则将四舍五入为 4096 的第二倍数(8192)并分配 8192 B。我认为这就是它的工作原理,但我想要确认。此外,大小是如此之大,因为这是 UNIX 页面大小的默认值...
标签: rust