|
virtual methods
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevТо, что это относительно однозначно будет работать на Intel архитектуре - всем понятно. Но стандарты на язык пишутся для разных архитектур. Об одном подводном камне (выравнивание) уже вспомнили.То есть, предлагаешь проверить всё это в g++ подобном компиляторе на платформе "Эльбрус", где существует некоторая типизация хранимых в памяти данных на уровне процессора? Не поверишь, но обычный Линух, собранный их же g++ подобным компилятором, работает на этой платформе, а в потрохах Линуха чего только нет... ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 13:57 |
|
virtual methods
|
|||
---|---|---|---|
#18+
Anatoly Moskovskya guestОткрой стандарт (или драфт). Там написано, как создаются объекты. Понятно, т.е. ответа нет.Ты настолько беспомощен, что не можешь найти http://eel.is/c draft/intro.object#def:object ? Я даже процитирую сюда http://eel.is/c draft/intro.object#def:object An object is created by a definition ([basic.def]), by a new-expression, when implicitly changing the active member of a union ([class.union]), or when a temporary object is created ([conv.rval], [class.temporary]). Если int a[2]; у тебя это definition, то да, там массив создаётся. Anatoly MoskovskyИз этого можно сделать вывод что мальчик путает созданный массив и проинициализированный массив, и не считает первое массивом Мимо, как обычно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:01 |
|
virtual methods
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevrdb_devпропущено... В мемориз! Скриньте это, парни!!!Вот честно говоря, ничего смешного не увидел A.Quest совершенно прав Там массив char (и при этом даже "не сырая" память от какого нибудь malloc'а, а "честный" массив char) А массив int, это массив другого типа. То, что это относительно однозначно будет работать на Intel архитектуре - всем понятно. Но стандарты на язык пишутся для разных архитектур. Об одном подводном камне (выравнивание) уже вспомнили.Тогда объясни мне пожалуйста такой момент: Допустим, я пишу на C++ какой-нибудь GRUB подобный загрузчик, работающий в реальном режиме адресации процессора семейства Intel x86 и мне надо перехватить прерывание divide by zero, перенаправив обработку этого исключения на свой обработчик этого прерывания, если: a) Таблица векторов прерываний располагается по адресу 0000:0; б) Я в своей программе не размещал и не инициализировал массив этой таблицы векторов прерываний по адресу 0000:0 (это сделал BIOS); в) Вектор прерывания divide by zero является первым элементом этой таблицы, а взятие элемента по нулевому указателю, это UB; Или, например, такой вариант: MS DirectX использует прямой доступ к памяти видеоконтроллера, картированной на адресное пространство процессора. Как реализация DirectX должна работать с видеопамятью, если она не создавала этот "массив байт" видеопамяти, в котором находится массив структур RGB которые, при разных режимах работы видеоконтроллера, могут иметь разный размер - от 2 до 4-х байт? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:17 |
|
virtual methods
|
|||
---|---|---|---|
#18+
a guestЯ даже процитирую сюда Правильно. Тот кто утверждает чушь и должен работать доказывая свои утверждения. Остальным-то чего напрягаться. Теперь доказывайте, что конструкция в которой в массиве uchar[] по очереди созданы элементы типа T, при том что все они помещаются внутрь того массива, не является массивом. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:24 |
|
virtual methods
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyПравильно. Тот кто утверждает чушь и должен работать доказывая свои утверждения.Тогда почему ты утверждаешь чушь и не особо спешишь её обосновывать? Anatoly MoskovskyТеперь доказывайте, что конструкция в которой в массиве uchar[] по очереди созданы элементы типа T, при том что все они помещаются внутрь того массива, не является массивом.Отсутствие не доказывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:27 |
|
virtual methods
|
|||
---|---|---|---|
#18+
a guestТогда почему ты утверждаешь чушь и не особо спешишь её обосновывать? Ну, это же не я написал "вот код в котором UB". Придется доказывать тому кто написал. Пока не видно доказательства. Вместо этого видно, что утвержается что пол-языка это UB. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:30 |
|
virtual methods
|
|||
---|---|---|---|
#18+
Anatoly Moskovskya guestТогда почему ты утверждаешь чушь и не особо спешишь её обосновывать? Ну, это же не я написал "вот код в котором UB".И этоAnatoly Moskovskyи никакой массив тут и не требуется. Достаточно чтобы там, по вычисленному адресу, который разыменовывается, был валидный объектне ты писал? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:33 |
|
virtual methods
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyНу, это же не я написал "вот код в котором UB". Придется доказывать тому кто написал. Пока не видно доказательства. Вместо этого видно, что утвержается что пол-языка это UB.Более того - хренова туча написанных на Си/C++ и работающих программ, по заверениям "гостя" работать не должна и не может! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:34 |
|
virtual methods
|
|||
---|---|---|---|
#18+
rdb_devAnatoly MoskovskyНу, это же не я написал "вот код в котором UB". Придется доказывать тому кто написал. Пока не видно доказательства. Вместо этого видно, что утвержается что пол-языка это UB.Более того - хренова туча написанных на Си/C++ и работающих программ, по заверениям "гостя" работать не должна и не может! Цитату сюда, где я утверждаю такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:36 |
|
virtual methods
|
|||
---|---|---|---|
#18+
a guest, так что, ответ на это: rdb_deva guestКак, если ты даже не умеешь читать? Покажи, с какого драфта ты скопировал то, что у тебя написано под спойлером.С какого драфта ты это цитировал, с того и взято. Я просто взял твою цитату драфта. будет? Или ты, таки, сам себя слил? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:39 |
|
virtual methods
|
|||
---|---|---|---|
#18+
rdb_deva guest, так что, ответ на это: rdb_devпропущено... С какого драфта ты это цитировал, с того и взято. Я просто взял твою цитату драфта. будет? Или ты, таки, сам себя слил?Смысл писать ответы, если ты не умеешь читать? Перечитай ещё раз, откуда бралась цитата и куда ты её приписал. Может, дойдёт после N-го перечитывания. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:41 |
|
virtual methods
|
|||
---|---|---|---|
#18+
a guestrdb_devпропущено... Более того - хренова туча написанных на Си/C++ и работающих программ, по заверениям "гостя" работать не должна и не может! Цитату сюда, где я утверждаю такое.Разве не ты здесь утверждаешь, что UB, это полный "ай-ай-ай" и что массив обязательно должен быть создан и инициализирован программой прежде, чем иметь к нему доступ. Может еще массив должен быть создан и инициализирован в той же самой единице компиляции, в одном потоке исполнения, чтобы программа могла "честно" получить к нему доступ? :) Бедные писатели драйверов и сервисов... "а мужики-то не знают!". Что уж говорить про тех, кто пользует mapped-memory файлы... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:45 |
|
virtual methods
|
|||
---|---|---|---|
#18+
a guestСмысл писать ответы, если ты не умеешь читать? Перечитай ещё раз, откуда бралась цитата и куда ты её приписал. Может, дойдёт после N-го перечитывания.Еще раз для тех, кто в бронепоезде - это ТВОЯ цитата драфта, а не моя. :) Я лишь сделал copy-past и написал перевод. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:46 |
|
virtual methods
|
|||
---|---|---|---|
#18+
rdb_deva guestСмысл писать ответы, если ты не умеешь читать? Перечитай ещё раз, откуда бралась цитата и куда ты её приписал. Может, дойдёт после N-го перечитывания.Еще раз для тех, кто в бронепоезде - это ТВОЯ цитата драфта, а не моя. :) Я лишь сделал copy-past и написал перевод. Перечитай ещё раз. Явно не дошло. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:51 |
|
virtual methods
|
|||
---|---|---|---|
#18+
a guest, так где в этом примере UB, дружище? Покажешь? Компилятор не ругается и собирает из команд процессора вполне ожидаемый и рабочий код... :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:54 |
|
virtual methods
|
|||
---|---|---|---|
#18+
rdb_devКомпилятор не ругается и собирает из команд процессора вполне ожидаемый и рабочий код... :)1. И что из этого следует? 2. "ожидаемы" — ещё понятно. А что такое "рабочий"? Нет недопустимых инструкций? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 14:59 |
|
virtual methods
|
|||
---|---|---|---|
#18+
a guest1. И что из этого следует? 2. "ожидаемы" — ещё понятно. А что такое "рабочий"? Нет недопустимых инструкций?Где в этом коде UB? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 15:01 |
|
virtual methods
|
|||
---|---|---|---|
#18+
rdb_deva guest1. И что из этого следует? 2. "ожидаемы" — ещё понятно. А что такое "рабочий"? Нет недопустимых инструкций?Где в этом коде UB?UB возникает во время выполнения и зависит от значений переменных. Хочешь продолжать обсуждение — пиши код без изъёбов. Я не собираюсь разбираться в ветках if-ов и смотреть, что там на какой итерации цикла будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 15:06 |
|
virtual methods
|
|||
---|---|---|---|
#18+
a guestrdb_devпропущено... Где в этом коде UB?UB возникает во время выполнения и зависит от значений переменных.И в чём же, во время выполнения, это UB выражается? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 15:09 |
|
virtual methods
|
|||
---|---|---|---|
#18+
rdb_deva guestпропущено... UB возникает во время выполнения и зависит от значений переменных.И в чём же, во время выполнения, это UB выражается? :)В чём угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 15:19 |
|
virtual methods
|
|||
---|---|---|---|
#18+
a guestrdb_devИ в чём же, во время выполнения, это UB выражается? :)В чём угодно.Например? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 15:24 |
|
virtual methods
|
|||
---|---|---|---|
#18+
rdb_deva guestпропущено... UB возникает во время выполнения и зависит от значений переменных.И в чём же, во время выполнения, это UB выражается? :) Скомпилировал в QT. Запустил программу 2-а раза. Ищите отличия сами. (почему она не свалилась на GPF я не очень понимаю) В общем, вполне себе undefined бехевиар проявляется ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 15:26 |
|
virtual methods
|
|||
---|---|---|---|
#18+
a guest BarloneС памятью, выделенной malloc, работать как с массивом вообще никак нельзя, да?Пока там не создан массив с помощью placement new — нельзя.Интересная точка зрения. И главное, я не могу найти в стандарте ее опровержения. А есть какие-нибудь обсуждения, комментарии по этому поводу (кроме этой темы)? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 15:27 |
|
|
start [/forum/topic.php?fid=57&msg=39653332&tid=2017692]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 163ms |
0 / 0 |