频繁开展读写文件,内存增长

频繁进行读写文件,内存增长发现一个不解的事,请高人指点,当频繁进行读写文件时,使用的内存会增长。写了一个

频繁进行读写文件,内存增长
发现一个不解的事,请高人指点,当频繁进行读写文件时,使用的内存会增长。
写了一个测试例,测了一下,如下所示:
test.cpp

#include <stdio.h>  
int main()  
{  
FILE *fd;  
char buf[32]; 
int numwritten;
while(true)
{
fd = fopen("testfile.txt","a+");  
if(NULL == fd)  
{  
printf("open file error!");  
return 0;  
}  

for ( int i = 0; i < 26; i++ )
buf[i] = (char)('z' - i);
/* Write 26 characters to stream */
numwritten = fwrite( buf, sizeof( char ), 25, fd );
printf( "Wrote %d items\n", numwritten );

if ( fflush(fd) != 0 )
{
printf(" fflush error");
return 0;
}

if ( fclose(fd) != 0 )
{
printf("fclose error");
return 0;
}
}
return 1;  
}  

在linux下面运行时,使用内存会不断增长,感觉不应该啊,请达人赐教

[解决办法]
写的时候文件被映射到内存中??
[解决办法]
读写文件都有缓冲,文件会被缓冲进内存,而且现代操作系统的缓冲区极大,貌似内存有多大就能缓存多大
[解决办法]

探讨
那总这么增长下去不行吧,有没有一个限制办法?

引用:
读写文件都有缓冲,文件会被缓冲进内存,而且现代操作系统的缓冲区极大,貌似内存有多大就能缓存多大

[解决办法]
内存怎么增长了?
你用top看的么?
缓冲区是固定的,fopen不要放到while里好么?只需要fopen一次啊。你可以写多次啊。
[解决办法]
linux写磁盘时先放在内存里的吧,要执行以下sync才能全部同步到硬盘上。
[解决办法]
fd = fopen("testfile.txt","a+");
这个没有创建很多文件啊,你只是追加的方式在写啊,while中fopen频繁打开文件也会影响性能的。
另外,可以设个缓冲,一次写入大的数据块,不要频繁写文件。
[解决办法]
会不会和内存的分配与释放机制有关,每次打开文件都要分配FILE结构和读写缓冲区,关闭以后这些内存并没有立刻归还给操作系统?