尝试刷新缓存时出现分段错误(核心转储)错误

Segmentation fault (core dumped) error while trying to flush cache

我正在尝试一些方法来测量我机器上的 TLB 大小。我不知何故需要确保 CPU 不会缓存我用来测量每页平均访问时间的数组元素。所以我在我的循环中尝试了这段代码,使用 here 上的答案:

FILE *fp;
fp = fopen("/proc/sys/vm/drop_caches", "w"); 
fprintf(fp, "3"); 
fclose(fp);

但是,我遇到了 Segmentation Fault (core dumped) 错误。我不知道为什么会这样。我对 C 不是很好,任何帮助将不胜感激。谢谢。

一定要检查文件打开是否成功,因为你是写系统文件,那肯定需要你运行在特权模式下。

FILE *fp;
fp = fopen("/proc/sys/vm/drop_caches", "w");
if (fp == NULL) {
    printf("error %d: %s\n", errno, strerror(errno));
    // error handling, exit or return
}
fprintf(fp, "3"); 
fclose(fp);