Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.03.2015, 18:03
|
|||
|---|---|---|---|
Растолкуйте |
|||
|
#18+
Вот этот пример-решение Код: plaintext 1. 17381263 вот это (T*) - приведение к ссылке адреса &ptr а это *(T*)&ptr - взятие значения по этому адресу, верно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.03.2015, 18:19
|
|||
|---|---|---|---|
Растолкуйте |
|||
|
#18+
Герой дняВот этот пример-решение Код: plaintext 1. 17381263 вот это (T*) - приведение к ссылке адреса &ptr Не совсем... Тут предполагается что ptr это простая переменная одного типа, а x это простая переменная другого типа. Код: plaintext 1. 2. 3. 4. А теперь мы приходим к кошмару: &ptr - указатель на тип S (T*)&ptr - превращаем указатель на S в указатель на T *(T*)&ptr - сюда уже можно писать. Ну и как wst сказал в цитируемом посте: "Если цель просто скомпилировать..." *(T*)&ptr=x; Скомпилируется без проблем, но правомочность такого приведения никто не гарантирует. По существу это тоже самое что и ptr = (S)x . Но когда мы знаем что x это число, а ptr это класс - сразу возникнут сомнения в разумности написавшего. А через обилие спецсимволов и конвертаций это можно замаскировать... По существу это чистое вредительство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.03.2015, 18:34
|
|||
|---|---|---|---|
Растолкуйте |
|||
|
#18+
White Owl, спасибо, теперь стало ясно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.03.2015, 18:38
|
|||
|---|---|---|---|
Растолкуйте |
|||
|
#18+
Самое интересное в таком решении - если писать через *(T*)&ptr, а читать весь ptr. И писать туда значения размерами, например, по очереди 4 и 2 (ну и, главное, читать их потом), не обнуляя при этом этот самый несчастный ptr. Зато счастлив компилятор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.03.2015, 18:47
|
|||
|---|---|---|---|
Растолкуйте |
|||
|
#18+
wst, мало что понял, почему 2 и 4, например.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.03.2015, 18:54
|
|||
|---|---|---|---|
Растолкуйте |
|||
|
#18+
Ок, 1. запустились, ptr = NULL (присваивание было в коде в исходном сообщении) 2. сделали f((int32_t)0xffff) 3. прочитали ptr, там 0xffff 4. сделали f(' ') 5. прочитали ptr, там не ' ', а 0xff20, как говорится "счастливой отладки" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&tablet=1&tid=2019067]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 147ms |

| 0 / 0 |
