程序使用sbrk(
) 函数声明大数组。Sbrk 按指定的增量更改数据段大小。我正在使用的标准库函数,例如:
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
我的 main() 函数首先声明一个变量: register *a; 我的目标是尝试将在内存访问期间将使用的所有变量放入寄存器中,因为我想要的唯一内存访问是数组。如果局部变量驻留在内存中,访问它们可能会对测量产生影响。接下来是分配数组,一个大约有 400 万个整数的数组,在 32 位机器上是 16 MB。
a=sbrk(4*1024*4096+8192);
a=(int *)((((int)a>>13)<<13)+8192);
启动程序时,会为其分配一些内存。该函数sbrk()
将这个内存增加给定的数量。在函数调用之后,“a”将指向这个巨大数组的开头。
现在我有了这些,我不知道该怎么做才能获得缓存块的大小,有什么建议吗?