Re: Expand palloc/pg_malloc API
От | Peter Eisentraut |
---|---|
Тема | Re: Expand palloc/pg_malloc API |
Дата | |
Msg-id | 8a844750-ba6a-4a32-3bc9-2ba73224b4df@enterprisedb.com обсуждение исходный текст |
Ответ на | Re: Expand palloc/pg_malloc API ("David G. Johnston" <david.g.johnston@gmail.com>) |
Список | pgsql-hackers |
On 27.07.22 01:58, David G. Johnston wrote: > Admittedly I'm still getting my head around reading pointer-using code > (I get the general concept but haven't had to code them).... > > - lockrelid = palloc(sizeof(*lockrelid)); > + lockrelid = palloc_ptrtype(lockrelid); > > // This definitely seems like an odd idiom until I remembered about > short-lived memory contexts and the lost pointers are soon destroyed there. > > So lockrelid (no star) is a pointer that has an underlying reference > that the macro (and the orignal code) resolves via the * > > I cannot reason out whether the following would be equivalent to the above: > > lockrelid = palloc_obj(*lockrelid); I think that would also work. Ultimately, it would be more idiomatic (in Postgres), to write this as lockrelid = palloc(sizeof(LockRelId)); and thus lockrelid = palloc_obj(LockRelId);
В списке pgsql-hackers по дате отправления: