malloced内存页面可以使用多少?

Hal*_*ate 2 c c++ malloc optimization performance

#include <unistd.h>
(size_t) sysconf(_SC_PAGESIZE);
Run Code Online (Sandbox Code Playgroud)

sysconf(_SC_PAGESIZE)告诉我,我的操作系统和处理器上的内存页面大小为4096.在内存页面中的4096个字节中,有多少可用于数据,有多少是开销/元数据?

我有一个应用程序,我通过将经常访问的指针打包到同一个缓存块中来优化缓存局部性,并且需要知道整个内存页是否可用,或者我是否将通过填充整个内存页来查看内存页边界.

ugo*_*ren 5

没有元数据.4096字节是可用的.
操作系统确实在某处存储元数据,但它存在于其他页面上,这不应该打扰你.

但是,您是否可以访问内存不依赖于页面大小.如果已分配100个字节,则只能访问100个字节.如果您已分配4096,则可以访问4096.