|
фрилансер
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,029
|
||||||||||||||||
Легальность проверки указателя на нахождение внутри массива30.11.2025, 18:33. Показов 3261. Ответов 24
Метки нет (Все метки)
Допустим, имеется указатель на начало массива и длина массива.
0
|
||||||||||||||||
| 30.11.2025, 18:33 | |
|
Ответы с готовыми решениями:
24
Как из неизменяемого указателя – имя массива и смещения указателя заполнить массив случайными числами Перезаписать память начиная с указателя Bitmap[1] элементами начиная с указателя Bitmap[0] Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ... |
|
Злостный нарушитель
10260 / 5684 / 1265
Регистрация: 12.03.2015
Сообщений: 26,366
|
||||||||
| 30.11.2025, 19:35 | ||||||||
0
|
||||||||
|
фрилансер
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,029
|
||
| 30.11.2025, 20:04 [ТС] | ||
|
Verevkin, про кратность - ну, да, возможно. Хотя, откуда он невыровненный появится.
С этим моментом достаточно просто побороться - скастить к char* да проверить в байтах. Смущает другое: арифметика укзазателей имеет смысл только тогда, когда указуемые элементы лежат в одном массиве. Поэтому интересен ответ с точки зрения знатоков стандарта - легально ли вот такое сравнение Добавлено через 1 минуту Добавлено через 1 минуту в "реальной жизни" такая задача никогда не нужна, это чисто интерес - "можно ли так", есть ли скрытые грабли
0
|
||
|
Злостный нарушитель
10260 / 5684 / 1265
Регистрация: 12.03.2015
Сообщений: 26,366
|
||||||||
| 30.11.2025, 20:13 | ||||||||
|
Поэтому, я б наколхозил чото такое:
0
|
||||||||
| 02.12.2025, 06:06 | ||||||
|
Интереснее такой вопрос
0
|
||||||
|
фрилансер
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,029
|
||||||
| 02.12.2025, 07:19 [ТС] | ||||||
|
Igor3D, ну, да, ситуация редкая. Но, к примеру, последние два вызова будут false
https://onlinegdb.com/1qSsIbUfJ
0
|
||||||
| 02.12.2025, 16:42 | |||||||
0
|
|||||||
|
фрилансер
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,029
|
||
| 02.12.2025, 17:22 [ТС] | ||
|
Особенно, если выровнять саму структура на 1 байт (у меня в примере этого нет, ага)
0
|
||
| 03.12.2025, 00:24 | |||||||
0
|
|||||||
|
фрилансер
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,029
|
|
| 03.12.2025, 06:51 [ТС] | |
|
Igor3D, зависит от ситуации.
К примеру, это сырой поток данных, и мы сканируем его, пытаясь найти валидное содержимое для A, внутри которого, к примеру, есть преамбула и CRC. Мы так и будем по байтику двигаться и анализировать Это ничего не ломает Правда, при этом нет никакой необходимости проверять нахождение в массиве. Но чисто гипотетически вот такой вызов может произойти, тут нет криминала
0
|
|
|
6156 / 2847 / 1042
Регистрация: 01.06.2021
Сообщений: 10,396
|
|||||||
| 03.12.2025, 17:01 | |||||||
0
|
|||||||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 866
|
|
| 03.12.2025, 18:23 | |
|
Royal_X, даже прям захотелось собрать что нибудь под bc 3.1 под дос с моделью памяти huge и посмотреть как там компилятор делает сравнение дальних указателей. Вот честно я даже не помню.
0
|
|
|
фрилансер
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,029
|
|
| 03.12.2025, 18:43 [ТС] | |
|
Royal_X, там ведь так же будет всё через оператор < сравнено, разница разве будет ?
А UB тут изначально не было, вопрос был в осмысленности результата. И я склоняюсь, что такая проверка - "нахожусь ли я в массиве" вообще не имеет смысла. Ведь это всегда известно по алгоритму
0
|
|
|
6156 / 2847 / 1042
Регистрация: 01.06.2021
Сообщений: 10,396
|
||
| 03.12.2025, 19:05 | ||
|
0
|
||
|
фрилансер
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,029
|
|
| 03.12.2025, 20:13 [ТС] | |
|
eva2326, ну, вот я что-то такое и имел в виду
0
|
|
| 03.12.2025, 21:32 | ||
|
0
|
||
|
Вездепух
12931 / 6799 / 1820
Регистрация: 18.10.2014
Сообщений: 17,210
|
|||||||||
| 04.12.2025, 13:16 | |||||||||
Сообщение было отмечено Алексей1153 как решение
РешениеГлобальное упорядочение указателей без неопределенного поведения вам даст std::less. То есть вместо того, что у вас там написано, должно было быть
std::less определяется реализацией, но должно вести себя "как надо".Добавлено через 4 минуты std::less не вызывает UB.
1
|
|||||||||
|
фрилансер
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,029
|
|
| 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
Преобразование кода без указателя в код с использованием указателя
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|