From: Niu Kun Date: June 10 2007 1:04am Subject: Re: Possible memory leak of mysql++? List-Archive: http://lists.mysql.com/plusplus/6640 Message-Id: <20070610010741.9467.qmail@lists.mysql.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Warren Young 写道: > Kun Niu wrote: >> >> string database = "perldbi"; > > Some of your results might change if you change this and the others to > this form: > > string database("perldbi"); > > Or, for that matter, pass the string literals directly to > Connection::connect(). > >> int main() >> { >> Connection con(false); >> con.connect( database.c_str(), host.c_str(), username.c_str(), >> password.c_str() ); >> Query query = con.query(); >> query<<"select name from perltable where name='kun'"; >> Result res = query.store(); >> Result &rres = res; >> if(query) >> test_result( res ); >> return 0; >> } > > Try wrapping the entire main() block in another block, except for the > "return 0" statement. This will force the compiler to dispose of the > various objects before returning from main, which might give valgrind > better insight into what's actually going on. > >> ==26905== by 0x4236515: mysqlpp::Connection::Connection(bool) (in >> /usr/lib/libmysqlpp.so.2.0.7) > > I'll bet you can guess my recommendation here: upgrade to 2.2.3. > >> It seems that the main problem comes from getservname_r. > > If it is, disposing of the Connection instance will probably fix it. If > that doesn't fix it, it's not really under MySQL++'s control, since > that's a connection-related library call. Thank you for your detailed reply. I followed your advice. But the result is the same.:( I wonder if mysql++ is thread-safe. I see less problem when my program is linked with non thread safe library.