在AIX上写入文件时发生内存泄漏

时间:2017-01-19 15:28:23

标签: c++ aix

我有以下用于编写日志的函数,它是在包括Windows和AIX在内的多个操作系统上运行的程序的一部分。问题是它在AIX上运行时导致内存泄漏,正在发生持续的内存增加,如果我只是删除代码,特别是fwrite调用,则情况并非如此。

void print_msg(char* header, char* msg)
{
   string buffer = "-------\n";
   buffer.append(header);
   buffer.append(msg);
   buffer.append("\n------\n");

   fwrite(buffer.c_str(), sizeof(char), buffer.length(), pFile);
   fflush(pFile);
}

文件在程序启动时打开,在程序终止前关闭。

值得一提的是,我使用以下命令来监视程序的内存消耗:

svmon -P <process_id> -O summary=basic,unit=MB

svmon命令的示例输出,我每隔几秒钟随机运行一次:

-----------------------------------------------
Pid         Inuse      Pin     Pgsp  Virtual
10158210    251.34     37.1     9.98   121.73
-----------------------------------------------
Pid         Inuse      Pin     Pgsp  Virtual
10158210    368.27     37.1     9.98   238.66
-----------------------------------------------
Pid         Inuse      Pin     Pgsp  Virtual
10158210    479.12     37.1     9.98   349.51
-----------------------------------------------
Pid         Inuse      Pin     Pgsp  Virtual
10158210    483.56     37.1     9.98   350.09
-----------------------------------------------
Pid         Inuse      Pin     Pgsp  Virtual
10158210    485.14     37.1     9.98   350.09
-----------------------------------------------
Pid         Inuse      Pin     Pgsp  Virtual
10158210    486.57     37.1     9.98   350.09
-----------------------------------------------
Pid         Inuse      Pin     Pgsp  Virtual
10158210    491.15     37.1     9.98   350.09
-----------------------------------------------
Pid         Inuse      Pin     Pgsp  Virtual
10158210    494.87     37.1     9.98   350.09
------------------------------------------------
Pid         Inuse      Pin     Pgsp  Virtual
10158210    496.44     37.1     9.98   350.09

问题是:这段代码出了什么问题?

0 个答案:

没有答案