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

QPT*_*PTR 0 c caching tlb

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

FILE *fp;
fp = fopen("/proc/sys/vm/drop_caches", "w"); 
fprintf(fp, "3"); 
fclose(fp);
Run Code Online (Sandbox Code Playgroud)

但是,我收到了Segmentation Fault (core dumped)错误.我不知道为什么会发生这种情况.我对C不是很好,任何帮助都会受到赞赏.谢谢.

flu*_*ter 6

确保检查文件是否成功,因为您正在写入系统文件,这当然要求您以特权模式运行.

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);
Run Code Online (Sandbox Code Playgroud)