Size: a a a

2020 March 11

EG

Emmanuel Goldstein in rust_offtopic
Соответственно, тот ноль, который мы получили из mmap не является нулевым указателем
источник

EG

Emmanuel Goldstein in rust_offtopic
Потому что не константен
источник

EG

Emmanuel Goldstein in rust_offtopic
И, согласно всё тому же 6.3.2.3.3 обязан compare unequal к настоящему NULL
источник

AZ

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

AZ

Alex Zhukovsky in rust_offtopic
Т-34 85
В достаточно выразительных языках ты можешь скопировать память побитово. Но вообще, чем дальше от истоков, тем более дальше от исходного смысла
эмм, в расте i32 x = mem::unitialized() это УБ
источник

AZ

Alex Zhukovsky in rust_offtopic
pointer is not a byte, как говорится
источник

EG

Emmanuel Goldstein in rust_offtopic
Т-34 85
О, отлично,  PVS дураки разрабатывают
Только они пишут не об этом.
>  если lvalue-выражение не указывает на объект при своем вычислении, возникает неопределенное поведение.
Оно указывает на объект, мы создали там объект до этого вызовом mmap().
источник

EG

Emmanuel Goldstein in rust_offtopic
Статья написана из предположения, что мы не аллоцировали память в нуле.
источник

EG

Emmanuel Goldstein in rust_offtopic
И первый же комментарий к статье — про то, что это не всегда правда.
источник

EG

Emmanuel Goldstein in rust_offtopic
http://c-faq.com/null/machexamp.html
И вот ещё про машины, которые используют не-ноль в качестве нулевого указателя.
источник

RP

Roman Proskuryakov in rust_offtopic
^
источник

Т8

Т-34 85 in rust_offtopic
Roman Proskuryakov
Ну а ты комменты почитай
Там ты отписался?
источник

RP

Roman Proskuryakov in rust_offtopic
зачем?
источник

RP

Roman Proskuryakov in rust_offtopic
я же не безмозглый фанатик, которого хлебом не корми, лишь бы дай пофлеймить
источник

Т8

Т-34 85 in rust_offtopic
Emmanuel Goldstein
Единственное, что требует стандарт — это что (type*)0 == (type*)NULL. Самого побитового равенства NULL и 0 стандарт не требует.
Тут и не надо требовать, это следствие
источник

EG

Emmanuel Goldstein in rust_offtopic
Т-34 85
Тут и не надо требовать, это следствие
Пруф.
Я тебе привёл даже название платформы, на которой это не так.
источник

RP

Roman Proskuryakov in rust_offtopic
"это неправильные платформы"
источник

p

polunin.ai in rust_offtopic
Alexander Krivitskiy
1. У раста её нет. Поведение программ на расте не определно? 2. Ты веришь, что спецификация будет реализована без багов?
2 баги не являются частью спецификации
источник

EG

Emmanuel Goldstein in rust_offtopic
И документацию системного вызова mmap(), которая в явном виде разрешает выделять память на 0x0.
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
эмм, в расте i32 x = mem::unitialized() это УБ
Лол
источник