Size: a a a

2020 March 11

C

Crush_my_love in rust_offtopic
Лев против пхпистом стал?
источник

p

polunin.ai in rust_offtopic
Это пиздец
источник

p

polunin.ai in rust_offtopic
В Украине
источник

Т8

Т-34 85 in rust_offtopic
Alex Zhukovsky
Но нулл все равно не 0x0
Откуда такой вывод?
источник

Т8

Т-34 85 in rust_offtopic
Alex Zhukovsky
Тогда почему 0 == null это false?
Потому что так написан operator==()
источник

Т8

Т-34 85 in rust_offtopic
Emmanuel Goldstein
Это implementation detail. Причём оба GCC и Clang здесь ведут себя некорректно, как мы выяснили
Может, всё-таки ты чего-то не понимаешь, а не разрабы компиляторов?
источник

EG

Emmanuel Goldstein in rust_offtopic
Т-34 85
Откуда такой вывод?
По определению: null это указатель не равный ни одному валидному указателю
источник

Т8

Т-34 85 in rust_offtopic
Emmanuel Goldstein
Я только что скидывал пример, где по 0x0 лежит валидное значение.
1. Нихрена не видно
2. Как ты узнал, что нет UB?
источник

EG

Emmanuel Goldstein in rust_offtopic
Т-34 85
Может, всё-таки ты чего-то не понимаешь, а не разрабы компиляторов?
Компиляторы си постоянно не соответсвуют стандарту, это нормально
источник

AL

Arsenii Lyashenko in rust_offtopic
polunin.ai
Это пиздец
Опять эльфийский
источник

EG

Emmanuel Goldstein in rust_offtopic
Т-34 85
1. Нихрена не видно
2. Как ты узнал, что нет UB?
Я скинул гист.
источник

Т8

Т-34 85 in rust_offtopic
Roman Proskuryakov
лоль. на голой железке не пиши, дай написать про 0x0
При чём тут голая железка? Мы про язык, вроде
источник

EG

Emmanuel Goldstein in rust_offtopic
UB нет, потому что мы разыменовываем указатель полученный в результате корректного (не завершившегося ошибкой) вызова mmap().
источник

EG

Emmanuel Goldstein in rust_offtopic
Мы имеем полное право это сделать.
источник

RP

Roman Proskuryakov in rust_offtopic
Т-34 85
При чём тут голая железка? Мы про язык, вроде
Null, равный 0x0, это исключение, а не правило
источник

Т8

Т-34 85 in rust_offtopic
Emmanuel Goldstein
Единственное, что тебе гарантирует стандарт C про NULL — это то, что он не равен любому валидному указателю.
В си нет NULL, там пишут 0 напрямую. То есть, есть, но это макрос того же
источник

EG

Emmanuel Goldstein in rust_offtopic
То, что это макрос — это implementation detail.
источник

EG

Emmanuel Goldstein in rust_offtopic
Спецификация указывает, что NULL — это некое значение, которое, если его привести к указателю, не равно никакому корректному указателю.
источник

Т8

Т-34 85 in rust_offtopic
Emmanuel Goldstein
Вот пример валидного указателя на 0x0.
Да почему не может быть указателя на 0?
источник

EG

Emmanuel Goldstein in rust_offtopic
По определению нулевой указатель не может быть равен указателю на какой-либо объект.
источник