malloc()
分配一个在进程内存空间内实际上是连续的内存块。malloc()
将大小作为以字节为单位的参数并返回指向已分配内存空间的指针,但如果要求分配 4k 对齐的内存怎么办?
问问题
2315 次
3 回答
3
这几乎肯定可以使用posix_memalign之类的东西来实现。
于 2013-07-03T05:43:38.767 回答
1
由于 4Kbytes 通常是一个页面的大小(参见sysconf(3)_SC_PAGESIZE
或旧的getpagesize (2)系统调用),您可以使用mmap(2)系统调用(由malloc
and使用posix_memalign
)来获得 4Kaligned 内存。
于 2013-07-03T05:50:25.617 回答
0
您不能在用户空间中分配物理上连续的内存。因为在用户空间内核总是从 highmem 区域分配内存。但是如果您正在编写内核模块或系统空间代码,那么您可以使用 _get_page() 或 _get_pages()。
于 2013-07-03T06:34:55.620 回答