После создания узказателя на динамическую область памяти какого-то типа, сами эти полезные данные находятся в динамической памяти, а содержимое указателя(запись адреса динамической памяти) находятся, видимо, в стеке.
Указатель - это переменная. Содержимое этой переменной - адрес. Собственно вопрос: где и как поживает информация о типе данных, на которые ссылается содержимое указателя, когда и кем она используется? Ну и интересуют книжки, в которых в таком ключе освещаются подобные подробности.
C++. Где и как хранится информация о типе указателя? (Это вопрос НЕ о том, как узнать тип)
Модератор: Модераторы разделов
-
- Сообщения: 83
- ОС: AgiliaLinux
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: C++. Где и как хранится информация о типе указателя?
Для простых типов — нигде не хранится на самом деле. Эта информация известна на этапе компиляции и соответственно вызываются соответствующие операции для данного типа.
Объекты с виртуальными методами хранят указатель на таблицу виртуальных функций. По этому указателю можно определить тип объекта (см. dynamic_cast).
Объекты с виртуальными методами хранят указатель на таблицу виртуальных функций. По этому указателю можно определить тип объекта (см. dynamic_cast).
-
- Сообщения: 83
- ОС: AgiliaLinux
Re: C++. Где и как хранится информация о типе указателя?
Хотелось бы поподробнее разузнать как происходит это "нигде". Например тип определяет длину байт как минимум необходимую для выделения памяти. Куда эта информация девается после компиляции и откуда берётся при выполнении программы.
Добрую литературку не порекомендуете-с?
Добрую литературку не порекомендуете-с?
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: C++. Где и как хранится информация о типе указателя?
Ну, очень грубо, int* p = new int[5] преобразуется в *p = malloc(5*sizeof(int)).
p[3] = 5; в (Intel синтаксис)
mov ebx, p
mov dword ptr [ebx+12], 5
Т.е. эта информация о типе "захардкожена" в выходном машинном коде.
Тут лучше наверное по Си литературку посмотреть. Там чаще такое рассматривается. Но так на вскидку не упомню, я мало книг читал, больше дизассемблером баловался.
UPD а может даже лучше литературу по компиляторам смотреть.
Спасибо сказали:
-
- Сообщения: 2041
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: C++. Где и как хранится информация о типе указателя?
Есть такая "книга дракона" (второе издание). Среди хакеров она одна из первых в списке must read.
Ну и священное писание от Дениса Ритчи.
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: C++. Где и как хранится информация о типе указателя?
vipermagi
http://en.wikipedia.org/wiki/Run-time_type_information - это единственная стандартизованная информация о типе, доступная операторам и функциям компилятора в С++. Никакой другой информации о типе не существует, и нельзя сказать, в рантайме, какого же типа данные находятся по указанному адресу. См. стандартный хидер typeinfo.
http://en.wikipedia.org/wiki/Run-time_type_information - это единственная стандартизованная информация о типе, доступная операторам и функциям компилятора в С++. Никакой другой информации о типе не существует, и нельзя сказать, в рантайме, какого же типа данные находятся по указанному адресу. См. стандартный хидер typeinfo.
Спасибо сказали:
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: C++. Где и как хранится информация о типе указателя?
ну я-бы написал эту книгу…
вы будете её читать?
-
- Сообщения: 83
- ОС: AgiliaLinux
Re: C++. Где и как хранится информация о типе указателя?
Всмысле как автор?
Ну дракона я уже начал читать. Надеюсь найду там много интересного.
Мне главное, чтобы на русязе. На английском можно только какие-нибудь статьи или мануалы, но ни как не книги, тем более страниц под 1000, как книга дракона.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: C++. Где и как хранится информация о типе указателя?
ага. Вот и читайте. Я про другой "ключ" говорил: писать о том, чего нет. Например в Pure C нет RTTI. В C++ есть, но такой особый, своеобразный. Я-бы сказал - костыльный. Ну уж какой есть…