|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,131
|
||||||||||||||||
Легальность проверки указателя на нахождение внутри массива30.11.2025, 18:33. Показов 7036. Ответов 24
Метки нет (Все метки)
Допустим, имеется указатель на начало массива и длина массива.
0
|
||||||||||||||||
| 30.11.2025, 18:33 | |
|
Ответы с готовыми решениями:
24
Как из неизменяемого указателя – имя массива и смещения указателя заполнить массив случайными числами Перезаписать память начиная с указателя Bitmap[1] элементами начиная с указателя Bitmap[0] Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ... |
|
Злостный нарушитель
10641 / 5792 / 1278
Регистрация: 12.03.2015
Сообщений: 26,737
|
||||||||
| 30.11.2025, 19:35 | ||||||||
0
|
||||||||
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,131
|
||
| 30.11.2025, 20:04 [ТС] | ||
|
Verevkin, про кратность - ну, да, возможно. Хотя, откуда он невыровненный появится.
С этим моментом достаточно просто побороться - скастить к char* да проверить в байтах. Смущает другое: арифметика укзазателей имеет смысл только тогда, когда указуемые элементы лежат в одном массиве. Поэтому интересен ответ с точки зрения знатоков стандарта - легально ли вот такое сравнение Добавлено через 1 минуту Добавлено через 1 минуту в "реальной жизни" такая задача никогда не нужна, это чисто интерес - "можно ли так", есть ли скрытые грабли
0
|
||
|
Злостный нарушитель
10641 / 5792 / 1278
Регистрация: 12.03.2015
Сообщений: 26,737
|
||||||||
| 30.11.2025, 20:13 | ||||||||
|
Поэтому, я б наколхозил чото такое:
0
|
||||||||
| 02.12.2025, 06:06 | ||||||
|
Интереснее такой вопрос
0
|
||||||
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,131
|
||||||
| 02.12.2025, 07:19 [ТС] | ||||||
|
Igor3D, ну, да, ситуация редкая. Но, к примеру, последние два вызова будут false
https://onlinegdb.com/1qSsIbUfJ
0
|
||||||
| 02.12.2025, 16:42 | |||||||
0
|
|||||||
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,131
|
||
| 02.12.2025, 17:22 [ТС] | ||
|
Особенно, если выровнять саму структура на 1 байт (у меня в примере этого нет, ага)
0
|
||
| 03.12.2025, 00:24 | |||||||
0
|
|||||||
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,131
|
|
| 03.12.2025, 06:51 [ТС] | |
|
Igor3D, зависит от ситуации.
К примеру, это сырой поток данных, и мы сканируем его, пытаясь найти валидное содержимое для A, внутри которого, к примеру, есть преамбула и CRC. Мы так и будем по байтику двигаться и анализировать Это ничего не ломает Правда, при этом нет никакой необходимости проверять нахождение в массиве. Но чисто гипотетически вот такой вызов может произойти, тут нет криминала
0
|
|
|
6234 / 2943 / 1047
Регистрация: 01.06.2021
Сообщений: 10,955
|
|||||||
| 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 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,131
|
|
| 03.12.2025, 18:43 [ТС] | |
|
Royal_X, там ведь так же будет всё через оператор < сравнено, разница разве будет ?
А UB тут изначально не было, вопрос был в осмысленности результата. И я склоняюсь, что такая проверка - "нахожусь ли я в массиве" вообще не имеет смысла. Ведь это всегда известно по алгоритму
0
|
|
|
6234 / 2943 / 1047
Регистрация: 01.06.2021
Сообщений: 10,955
|
||
| 03.12.2025, 19:05 | ||
|
0
|
||
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,131
|
|
| 03.12.2025, 20:13 [ТС] | |
|
eva2326, ну, вот я что-то такое и имел в виду
0
|
|
| 03.12.2025, 21:32 | ||
|
0
|
||
|
Вездепух
13183 / 6819 / 1821
Регистрация: 18.10.2014
Сообщений: 17,259
|
|||||||||
| 04.12.2025, 13:16 | |||||||||
Сообщение было отмечено Алексей1153 как решение
РешениеГлобальное упорядочение указателей без неопределенного поведения вам даст std::less. То есть вместо того, что у вас там написано, должно было быть
std::less определяется реализацией, но должно вести себя "как надо".Добавлено через 4 минуты std::less не вызывает UB.
1
|
|||||||||
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,131
|
|
| 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 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|