|
фрилансер
6466 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,128
|
||||||||||||||||
Легальность проверки указателя на нахождение внутри массива30.11.2025, 18:33. Показов 6886. Ответов 24
Метки нет (Все метки)
Допустим, имеется указатель на начало массива и длина массива.
0
|
||||||||||||||||
| 30.11.2025, 18:33 | |
|
Ответы с готовыми решениями:
24
Как из неизменяемого указателя – имя массива и смещения указателя заполнить массив случайными числами Перезаписать память начиная с указателя Bitmap[1] элементами начиная с указателя Bitmap[0] Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ... |
|
Злостный нарушитель
10637 / 5788 / 1277
Регистрация: 12.03.2015
Сообщений: 26,723
|
||||||||
| 30.11.2025, 19:35 | ||||||||
0
|
||||||||
|
фрилансер
6466 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,128
|
||
| 30.11.2025, 20:04 [ТС] | ||
|
Verevkin, про кратность - ну, да, возможно. Хотя, откуда он невыровненный появится.
С этим моментом достаточно просто побороться - скастить к char* да проверить в байтах. Смущает другое: арифметика укзазателей имеет смысл только тогда, когда указуемые элементы лежат в одном массиве. Поэтому интересен ответ с точки зрения знатоков стандарта - легально ли вот такое сравнение Добавлено через 1 минуту Добавлено через 1 минуту в "реальной жизни" такая задача никогда не нужна, это чисто интерес - "можно ли так", есть ли скрытые грабли
0
|
||
|
Злостный нарушитель
10637 / 5788 / 1277
Регистрация: 12.03.2015
Сообщений: 26,723
|
||||||||
| 30.11.2025, 20:13 | ||||||||
|
Поэтому, я б наколхозил чото такое:
0
|
||||||||
| 02.12.2025, 06:06 | ||||||
|
Интереснее такой вопрос
0
|
||||||
|
фрилансер
6466 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,128
|
||||||
| 02.12.2025, 07:19 [ТС] | ||||||
|
Igor3D, ну, да, ситуация редкая. Но, к примеру, последние два вызова будут false
https://onlinegdb.com/1qSsIbUfJ
0
|
||||||
| 02.12.2025, 16:42 | |||||||
0
|
|||||||
|
фрилансер
6466 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,128
|
||
| 02.12.2025, 17:22 [ТС] | ||
|
Особенно, если выровнять саму структура на 1 байт (у меня в примере этого нет, ага)
0
|
||
| 03.12.2025, 00:24 | |||||||
0
|
|||||||
|
фрилансер
6466 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,128
|
|
| 03.12.2025, 06:51 [ТС] | |
|
Igor3D, зависит от ситуации.
К примеру, это сырой поток данных, и мы сканируем его, пытаясь найти валидное содержимое для A, внутри которого, к примеру, есть преамбула и CRC. Мы так и будем по байтику двигаться и анализировать Это ничего не ломает Правда, при этом нет никакой необходимости проверять нахождение в массиве. Но чисто гипотетически вот такой вызов может произойти, тут нет криминала
0
|
|
|
6234 / 2943 / 1047
Регистрация: 01.06.2021
Сообщений: 10,938
|
|||||||
| 03.12.2025, 17:01 | |||||||
0
|
|||||||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 869
|
|
| 03.12.2025, 18:23 | |
|
Royal_X, даже прям захотелось собрать что нибудь под bc 3.1 под дос с моделью памяти huge и посмотреть как там компилятор делает сравнение дальних указателей. Вот честно я даже не помню.
0
|
|
|
фрилансер
6466 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,128
|
|
| 03.12.2025, 18:43 [ТС] | |
|
Royal_X, там ведь так же будет всё через оператор < сравнено, разница разве будет ?
А UB тут изначально не было, вопрос был в осмысленности результата. И я склоняюсь, что такая проверка - "нахожусь ли я в массиве" вообще не имеет смысла. Ведь это всегда известно по алгоритму
0
|
|
|
6234 / 2943 / 1047
Регистрация: 01.06.2021
Сообщений: 10,938
|
||
| 03.12.2025, 19:05 | ||
|
0
|
||
|
фрилансер
6466 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,128
|
|
| 03.12.2025, 20:13 [ТС] | |
|
eva2326, ну, вот я что-то такое и имел в виду
0
|
|
| 03.12.2025, 21:32 | ||
|
0
|
||
|
Вездепух
13182 / 6818 / 1821
Регистрация: 18.10.2014
Сообщений: 17,255
|
|||||||||
| 04.12.2025, 13:16 | |||||||||
Сообщение было отмечено Алексей1153 как решение
РешениеГлобальное упорядочение указателей без неопределенного поведения вам даст std::less. То есть вместо того, что у вас там написано, должно было быть
std::less определяется реализацией, но должно вести себя "как надо".Добавлено через 4 минуты std::less не вызывает UB.
1
|
|||||||||
|
фрилансер
6466 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,128
|
|
| 04.12.2025, 17:18 [ТС] | |
|
TheCalligrapher, принято
![]() Добавлено через 7 минут TheCalligrapher, кстати, а проверять указатели на равенство, неравенство и прочее - тоже лучше стандартными функторами ? (Вспоминается защита от самокопирования, там обычно так смело if(this != &rhs))
0
|
|
| 04.12.2025, 17:32 | |||
Адресную арифметику никто не отменял. Переход на др адресную модель не актуален. "Фишки" типа std::less - пустая трата времени и внимания программиста. Если много говорит об UB - опасайтесь/избегайте таких
0
|
|||
| 04.12.2025, 17:32 | |
|
Помогаю со студенческими работами здесь
20
Преобразование кода без указателя в код с использованием указателя
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|