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.