C fprintf导致MemFree减少

C fprintf导致MemFree减少,c,linux,printf,buffer,fflush,C,Linux,Printf,Buffer,Fflush,我有一个线程将变量的值记录到一个文件中,类似于: fp = fopen("log.txt", "a"); fprintf(fp, "%d,", var1); fprintf(fp, "%d,", var2); fprintf(fp, "%d,", var3); ... fprintf(fp, "\n"); fclose(fp); 我注意到/proc/meminfo中的Me

我有一个线程将变量的值记录到一个文件中,类似于:

fp = fopen("log.txt", "a");

fprintf(fp, "%d,", var1);
fprintf(fp, "%d,", var2);
fprintf(fp, "%d,", var3);
...
fprintf(fp, "\n");

fclose(fp);
我注意到/proc/meminfo中的MemFree正在迅速减少,我怀疑是因为我的输出被缓冲了。令我惊讶的是,MemFree在终止进程后没有恢复。 这就引出了这些问题:

  • 内存不足(或没有)会导致问题吗
  • 如何避免“丢失”内存

  • 提前感谢。

    需要仔细解释过程统计数据。MemFree表示未使用的RAM的当前大小。请注意,“已使用”包括操作系统尚未释放但在需要时可以释放的内存。因此,可以说,MemAvailable是一个更好的价值观。这个值通常比MemFree大,因为它包括可以在需要时回收/释放的内存(例如缓冲区和缓存)。好的,谢谢。那么,我是否应该在代码中做一些其他的事情,而忽略MemFree正在减少的事实呢?关键是,除非你确定代码中有什么不对劲的地方,否则没有什么可以做的。有什么理由让你一开始就看这些数据吗?如果您真的想/需要对此进行故障排除,那么您需要先阅读内存统计信息,然后再尝试从中得出结论。