我有一个用C/C++编写的程序(守护进程)。它运行得很好,但是在一段时间后(可能是5天、一周或两周),它开始分配大量内存。我无法理解哪些代码部分没有释放已分配的内存。启动时内存使用量约为20-30兆字节。然后经过一段时间,或者可能是某个事件后,它缓慢增长1MB每小时,如果不终止就会崩溃,因为没有可用内存。
我尝试使用Valgrind,并在守护进程已经分配了大约500MB内存时正常关闭它。关闭过程非常漫长,但完成后,Valgrind表示未发现任何内存泄漏,除了mysql_init/mysql_close过程(明确丢失了约504字节)。谷歌说不用担心这个Mysql泄漏,并给出了一些原因,为什么像Valgrind这样的内存诊断工具认为它是泄漏。
我真的不知道哪些代码部分会分配内存,但只有在程序关闭时才释放它。请帮助我找出这个问题。
我尝试使用Valgrind,并在守护进程已经分配了大约500MB内存时正常关闭它。关闭过程非常漫长,但完成后,Valgrind表示未发现任何内存泄漏,除了mysql_init/mysql_close过程(明确丢失了约504字节)。谷歌说不用担心这个Mysql泄漏,并给出了一些原因,为什么像Valgrind这样的内存诊断工具认为它是泄漏。
我真的不知道哪些代码部分会分配内存,但只有在程序关闭时才释放它。请帮助我找出这个问题。