|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||
Strict aliasing и memcpy07.06.2017, 00:48. Показов 4541. Ответов 36
Метки нет (Все метки)
Что-то я никак не врублюсь, как согласуются между собой strict aliasing и функции жонглирующие void*? Возьмем для примера memcpy. Стандартная оптимизация данной функции - копировать данные не отдельными байтами, а кусками побольше. Например, int-ами. Но для этого надо залезть через int* указатель в данные, которые вообще говоря могут и не являться массивом int. А strict aliasing такие фокусы запрещает. Однако, функция в стандарте есть. Так как она тогда в этот стандарт вписывается?
If a program attempts to access the stored value of an object through a glvalue of other than one of the following types the behavior is undefined: 52 — the dynamic type of the object, — a cv-qualified version of the dynamic type of the object, — a type similar (as defined in 4.4) to the dynamic type of the object, — a type that is the signed or unsigned type corresponding to the dynamic type of the object, — a type that is the signed or unsigned type corresponding to a cv-qualified version of the dynamic type of the object, — an aggregate or union type that includes one of the aforementioned types among its elements or non- static data members (including, recursively, an element or non-static data member of a subaggregate or contained union), — a type that is a (possibly cv-qualified) base class type of the dynamic type of the object, — a char or unsigned char type.
0
|
||||||
| 07.06.2017, 00:48 | |
|
Ответы с готовыми решениями:
36
Каламбур типизации и strict aliasing
Union, new placement, strict-aliasing, cross-platform |
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||||||
| 09.06.2017, 12:56 [ТС] | |||||||
0
|
|||||||
|
Комп_Оратор)
|
||
| 09.06.2017, 13:11 | ||
|
В Вашем коде этого не видно. Всё вроде нормально. Если компилятор и тут имеет право, что-то не сделать, то осталось совсем немного до дурдома. Или я не прав?
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 09.06.2017, 13:34 | ||
|
1
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 09.06.2017, 13:44 [ТС] | ||
|
1
|
||
|
Комп_Оратор)
|
|||
| 09.06.2017, 14:42 | |||
|
Я читая того же Аксёнова понял, что именно различные по типу указатели на одну и ту же память могут быть разыменованы для записи без разыменования и записи. Дико это. И поэтому я попросил пример, который бы показывал, когда адекватный код, может быть ускорен такой оптимизацией без риска навредить тому кто такой код написал. То есть я хочу понять мотивы разрабов компиляторов. Покажите мне пример, когда программист написал такое, для того чтобы оно было оптимизировано и не выполнено. Иначе создаётся впечатление, что авторы шепчут ( а в сишечке такого и нету, может туда лучше вернуться? ). Шучу.
0
|
|||
|
|
|
| 09.06.2017, 15:16 | |
|
Чисто на всякий случай: restrict и strict-aliasing - это немного перпендикулярные вещи.
Strict-aliasing - это то, что исторически было раньше. Возможно, что исходили из того, что в реальной жизни указатели на разные типы данных в реальной жизни в 99.99% случаев не пересекаются. Поэтому нужно было что-то изобрести, чтобы компилятор в коде: C float *p1; int *p2; ... *p1 = ... ... = *p2;
2
|
|
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|||
| 09.05.2018, 17:41 | |||
|
Арифметика указателей при этом не разрешена, т.к. этот указатель не указывает на элемент массива из (unsigned) char.
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 09.05.2018, 23:37 [ТС] | ||
|
0
|
||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|||
| 10.05.2018, 00:14 | |||
std::istream::read ничего сама не нарушает.А вот программист может нарушить неправильным её использованием.
read можно совать только массив из символов и что указатель должен указывать на первый элемент массива.
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 10.05.2018, 00:40 [ТС] | |||
|
0
|
|||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||||
| 11.05.2018, 15:39 | ||||
"b" в stdio):
0
|
||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 11.05.2018, 19:11 [ТС] | ||
|
0
|
||
|
Неэпический
|
|||
| 11.05.2018, 19:24 | |||
|
Им вообще пофиг на этот стандарт. У них свои правила.
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 11.05.2018, 19:41 [ТС] | ||
|
0
|
||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|
| 22.05.2018, 04:32 | |
|
0
|
|
| 22.05.2018, 04:32 | |
|
warning: dereferencing pointer 't' does break strict-aliasing rules SkyBox Anti-Aliasing Имитация anti-aliasing фотошопа средствами CSS Anti-aliasing Asus Rog Strix RX-480-08G Gaming Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|