- 论坛徽章:
- 0
|
在AIX5.3下,编了一个测试程序,代码如下,就是往一个文件里面写东西,但在运行它时,用svmon -P PID -i 5去看内存使用情况,如现程序在不断增加内存,就好像打印到文件的东西被放在内存了一样,难道用了fflush(),数据照样还会在内存有一份吗?而且发现跑很长时间,该内存一直增加,感觉就像内存有泄露一样。另,我把fopen和fclose放到循环里面,情况也一样。想问一下大家,是否有同样的情况?
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd LPage
23654 test2 9421 4460 146 9943 N N N
23654 test2 9422 4460 146 9943 N N N
23654 test2 9423 4460 146 9943 N N N
#include <stdio.h>
#include <sys/select.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#define TEXT "ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt.\n"
int main()
{
FILE* fp = fopen("test.log", "a+");
if (!fp)
{
printf("fopen error!\n");
return 0;
}
for(int i = 0; i < 100000; i++)
{
clearerr(fp);
fwrite(TEXT, 1, strlen(TEXT), fp);
if (ferror(fp))
{
printf("error.\n");
return 0;
}
fflush(fp);
struct timeval tv = {0, 100000};
select(0, NULL, NULL, NULL, &tv);
}
fclose(fp);
return 0;
} |
|