1

malloc()分配一个在进程内存空间内实际上是连续的内存块。malloc()将大小作为以字节为单位的参数并返回指向已分配内存空间的指针,但如果要求分配 4k 对齐的内存怎么办?

4

3 回答 3

3

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

于 2013-07-03T05:43:38.767 回答
1

由于 4Kbytes 通常是一个页面的大小(参见sysconf(3)_SC_PAGESIZE或旧的getpagesize (2)系统调用),您可以使用mmap(2)系统调用(由mallocand使用posix_memalign)来获得 4Kaligned 内存。

于 2013-07-03T05:50:25.617 回答
0

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

于 2013-07-03T06:34:55.620 回答