Hi, guys, On Fri, Aug 4, 2017 at 5:01 PM, Tom Lane <tgl@xxxxxxxxxxxxx> wrote: > Igor Korot <ikorot01@xxxxxxxxx> writes: >> I have a following piece of code: > >> [code] >> PGresult *res = PQexecPrepared(); >> status = PQresultStatue( res ); >> if( status == PGRES_TUPLES_OK ) >> { >> for( int j = 0; j < PQntuples( res ); j++ ) >> { >> char *foo = PQgetValue( res, j, 0 ); >> char *bar = PQgetValue( res, j, 1 ); >> MyObject *obj = new MyObject( foo, bar ); >> if( SetAdditionalProperties( obj ) ) >> { >> result = 1; >> break; >> } >> } >> PQclear( res ); >> } > > What I'm wondering about is whether the MyObject constructor is making > copies of the strings it's passed, or whether it thinks it can just hold > onto those pointers. The pointers would be dangling once you do PQclear. > Now, if the MyObject has gone out of scope and been destroyed, which > this coding suggests would happen, then that shouldn't matter ... but > maybe the pointers got copied to somewhere longer-lived? Anyway, there's > nothing visibly wrong with what you showed us, so the problem is somewhere > else. I need to deeply apologize. I cam home yesterday, look at the code again and saw the PQclear() call in the if() block. However it leads to another question - should PQclear set the pointer to NULL? Sorry for the noise once again and thank you for reading. > > regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general