[devel] Re: RPM::Database
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Окт 19 23:07:02 MSD 2005
On Wed, Oct 19, 2005 at 10:04:00PM +0400, Dmitry V. Levin wrote:
> On Wed, Oct 19, 2005 at 09:46:29PM +0400, Alexey Tourbin wrote:
> > Такое впечатление, что происходит неправильный dereferencing, то есть
> > rpmTagTable в качестве указателя уже смотрит непойми куда. Я озадачен. :)
>
> Это просто:
>
> 1. extern const struct headerTagTableEntry_s rpmTagTable[];
> Что такое символ rpmTagTable для приложения?
> Это адрес, по которому находится первый элемент массива.
Да.
> 2. extern const struct headerTagTableEntry_s * rpmTagTable;
> Что такое символ rpmTagTable для приложения?
> Это адрес, по которому находится адрес первого элемента массива.
Нет. И тот и другой -- адрес первого элемента массива. Только первый
адрес константный, его нельзя менять (компилятор сразу может проставить
сам этот адрес в код, но не проставляет). А второй адрес можно менять,
компилятор обязан использовать косвенную адресацию. Впрочем, я не до
конца понимаю, что там делает компилятор. С точки зрения самого языка
Си эти две записи идентичны.
Нужно посмотреть, что там `gcc -S' показывает, но лень. Но может
посмотрю. :)
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20051019/3fadeff4/attachment-0001.bin>
Подробная информация о списке рассылки Devel