Re: [GENERAL] Lifetime of PQexecPrepared() returned value
От | Igor Korot |
---|---|
Тема | Re: [GENERAL] Lifetime of PQexecPrepared() returned value |
Дата | |
Msg-id | CA+FnnTxPr6fmUqtVjgcm5p_dqs4TQMro_9UCVyg2g+dbyRY6xw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [GENERAL] Lifetime of PQexecPrepared() returned value (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: [GENERAL] Lifetime of PQexecPrepared() returned value
|
Список | pgsql-general |
Hi, guys, On Fri, Aug 4, 2017 at 5:01 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Igor Korot <ikorot01@gmail.com> 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
В списке pgsql-general по дате отправления: