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 по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Expand palloc/pg_malloc API
Следующее
От: Thomas Munro
Дата:
Сообщение: Re: Cleaning up historical portability baggage