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