0 / 0 / 0
Регистрация: 10.06.2021
Сообщений: 3
|
|
1 | |
Адрес, который содержит указатель10.06.2021, 06:13. Показов 1930. Ответов 5
Метки нет (Все метки)
Наткнулся на такую интересную штуку и вроде как понял.
Есть один справочник, где есть вот такая вещь: 0xB74494 - Содержит указатель. Этот указатель: +0 = Содержит указатель на первый элемент в пуле CVehicle +4 = Содержит указатель на карту байтов показывающую какие элементы сейчас используются в пуле CVehicle +8 = [dword] максимальное кол-во элементов в пуле CVehicle +12 = [dword] текущее кол-во элементов в пуле CVehicle Есть адрес, который содержит указатель. В разных источниках под словом "указатель" понимают адрес, на который указывает указатель, то есть просто значение указателя, а также я так понимаю, что указатель - это адрес в памяти, который содержит другой адрес. Как это понимать в данном случае? Я думаю, что я себя просто путаю. И на самом деле этот адрес и является указателем, то есть адресом указателя. А уже по этому адресу лежит другой адрес, по смещению от которого можно получить разные значения. Например я так понимаю, можно сделать так: 1) прочитать значение по 0xB74494 И это будет адрес. 2) прибавить к тому, что считали оффсет, например +8, и получим новый адрес с оффсетом 3) считать значение по этому новому адресу с оффсетом и получить максимальное кол-во элементов в пуле CVehicle
0
|
10.06.2021, 06:13 | |
Ответы с готовыми решениями:
5
Существует указатель p. Можно ли выяснить, содержит он адрес допустимого значения или нет Получить адрес памяти, на который ссылается указатель Сохранить адрес из указателя в другой указатель, а потом первый указатель удалить Указатель на char и адрес |
фрилансер
5499 / 5095 / 1047
Регистрация: 11.10.2019
Сообщений: 13,346
|
||||||
10.06.2021, 08:02 | 2 | |||||
Сообщение было отмечено liquidoxygen как решение
Решение
liquidoxygen, указатель - это переменная. Эта переменная может содержать адрес
а это описана некая структура (только не средствами языка, а на словах) Добавлено через 1 минуту может выглядеть так
1
|
0 / 0 / 0
Регистрация: 10.06.2021
Сообщений: 3
|
|
10.06.2021, 09:08 [ТС] | 3 |
Алексей1153, Тогда я так понял, что этот адрес 0xB74494 и есть адрес указателя. То есть по этому адресу лежит значение указателя (адрес).
А это значение(адрес) является адресом структуры, по смещению которой можно получить элементы. Верно? Вот то, что я изначально предполагал - во вложении. Посмотрите пожалуйста.
0
|
фрилансер
5499 / 5095 / 1047
Регистрация: 11.10.2019
Сообщений: 13,346
|
|
10.06.2021, 09:36 | 4 |
liquidoxygen, вроде всё так)
прокомментирую по картинке: в колонке Address у тебя физические (назовём их так, хотя это может быть и не так) значения адресов ОЗУ по адресу 0xB74494 у тебя лежит переменная с типом указатель . Эта переменная имеет длину, скажем, 8 байтов (то есть, занимает адреса 0xB74494...0xB74494+8-1 ) и содержит в себе значение (на картинке это 0x0000000000000cd2 ), которое обозначает адрес чего-либо. В данном случае - адрес начала экземпляра структуры в ОЗУ
1
|
0 / 0 / 0
Регистрация: 10.06.2021
Сообщений: 3
|
|
10.06.2021, 09:57 [ТС] | 5 |
Алексей1153, Спасибо. Я разбираюсь в указателях, но пришлось столкнуться с справочником, где описаны адреса в памяти словами. И я запутался в терминологии. Ибо под указателем можно понимать две вещи: 1) адрес указателя в памяти. 2) значение этого адреса (то есть адрес того, на что указывает). Сейчас понял, что это может зависеть от того, что даётся изначально.
Для закрепления я CE4 на dissect structures повесил адрес 0xB74494 и вот что он раскопал. Все идеально. Вам еще раз спасибо, но тут дело даже не в самих указателях, а в терминологии.
0
|
фрилансер
5499 / 5095 / 1047
Регистрация: 11.10.2019
Сообщений: 13,346
|
|
10.06.2021, 10:06 | 6 |
liquidoxygen, если структура расположения данных известна, то можно описать struct с нужным содержимым. Тогда не нужно будет вручную добавлять смещение указателю, а просто "указать" на начало экземпляра в памяти, а к полям иметь доступ через оператор
->
0
|
10.06.2021, 10:06 | |
10.06.2021, 10:06 | |
Помогаю со студенческими работами здесь
6
Указатель на произвольный адрес Как руками записать адрес в указатель? Объясните, почему указатель на char - не возвращает адрес? Как лучше присвоить указателю на указатель адрес массива Как записать адрес в указатель во время работы программы Передать напрямую текст в функцию, принимающую указатель на адрес Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |