如何分配4k对齐的内存

时间:2013-07-03 05:40:45

标签: linux memory-management malloc

malloc()分配一个内存块,它在进程内存空间内几乎是连续的。 malloc()将一个大小作为参数以字节为单位,并返回指向该分配的内存空间的指针,但如果需要分配4k对齐的内存呢?

3 个答案:

答案 0 :(得分:2)

几乎可以肯定使用像posix_memalign这样的东西来实现。

答案 1 :(得分:1)

由于4Kbytes通常是页面大小(请参阅sysconf(3) _SC_PAGESIZE或旧getpagesize(2)系统调用),因此您可以使用mmap(2)系统调用({{3}}使用{ {1}}和malloc)获得4K对齐内存。

答案 2 :(得分:0)

您无法在用户空间中分配物理上连续的内存。因为在用户空间内核总是从highmem区域分配内存。但是,如果您正在编写内核模块或系统空间代码,则可以使用_get_page()或_get_pages()。