Войти
ФлеймФорумПрограммирование

Общие вопросы по программированию (70 стр)

Страницы: 169 70 71 72113 Следующая »
#1035
13:30, 16 янв. 2020

Delfigamer
> А, не, там получается ещё круче:
Это UB
5.3.5  Delete[expr.delete]

In the second alternative (delete array) if the dynamic type of the object to be deleted differs from its static type, the behavior is undefined.

#1036
14:09, 16 янв. 2020

Тут UB, там UB. В этих ваших плюсах есть вообще defined behaviour?

#1037
14:10, 16 янв. 2020

mr.DIMAS
> Тут UB, там UB. В этих ваших плюсах есть вообще defined behaviour?
Иногда случается.

#1038
14:19, 16 янв. 2020

mr.DIMAS
> В этих ваших плюсах есть вообще defined behaviour?
Есть, но его не успевают реализовывать, стандарт меняется.

#1039
(Правка: 14:32) 14:32, 16 янв. 2020

BingoBongo
> Как этот подход называется, когда у указателя лежат данные по отрицательному
> индексу pointer[-1]

backward indexation?

#1040
14:48, 16 янв. 2020

BingoBongo
> Как этот подход называется, когда у указателя лежат данные по отрицательному
> индексу pointer[-1] - back keeping?
анал-карнавал

#1041
14:48, 16 янв. 2020

beejah
> mr.DIMAS
> > В этих ваших плюсах есть вообще defined behaviour?
> Есть, но его не успевают реализовывать, стандарт меняется.
Это просто гениально! Где бы это увековечить?

#1042
12:16, 18 янв. 2020

Неожиданно для себя наткнулся вот в реальном продукте на такой вот кодец.
https://rextester.com/RTNO9654

И все бы ничего, но разные компиляторы, даже от одного вендора, дают разный результат
https://rextester.com/MGITO32157

Что там стандарт по этому поводу говорит?

#1043
12:22, 18 янв. 2020

totoro
Что #pragma каждый реализует как хочет. В том числе может тупо проигнорировать все незнакомые.

#1044
12:32, 18 янв. 2020

Delfigamer
Занятно. Но мне что-то подсказывает, что тут кое что кроме прагм не ок.
https://rextester.com/EQPB88690

#1045
12:37, 18 янв. 2020

totoro
Что-то мне подсказывает, что https://rextester.com/QJOV4614 и https://rextester.com/FXOUW72470

#1046
12:43, 18 янв. 2020

Delfigamer

CompositePacket: size 32, align 4
CompositePacket2: size 28, align 4

Так почему разница-то в 4 байта, думаешь из-за прагм?
#1047
12:53, 18 янв. 2020

totoro
> Так почему разница-то в 4 байта, думаешь из-за прагм?
https://rextester.com/DDO3908

#1048
(Правка: 16:15) 15:47, 18 янв. 2020

Экое осложнение :/ Ладно, обойдемся без прагм тогда
https://rextester.com/QFCVD40524
https://rextester.com/OXOA67352
Вопрос прежний.

#1049
16:56, 18 янв. 2020
offsetof(CompositePacket1, value1) = 4
Изображение
_

Ну а вообще, структуры с базами не считаются POD, даже если базы пустые. А правила C ABI распространяются только на POD. Структура с базами - это уже чистый C++. А поскольку "C++ ABI" так и не стал частью нашей действительности, то вот каждый компилятор и херачит по-своему.
_

А, кажется, я понял. Помните, как Стандарт требовал, чтобы у всех объектов были уникальные адреса, даже если у объекта ноль данных? Это, кстати, одна из причин, почему sizeof(BasePacket)==1, а не ==0. Ну и гцц, судя по всему, решил, что CompositePacket1::BasePacket и CompositePacket1::value1::BasePacket тоже должны быть разными объектами, вот и раскидал их по разным адресам.

Страницы: 169 70 71 72113 Следующая »
ФлеймФорумПрограммирование