Size: a a a

2020 March 11

EG

Emmanuel Goldstein in rust_offtopic
Вот пример валидного указателя на 0x0.
источник

AK

Alexander Krivitskiy in rust_offtopic
Emmanuel Goldstein
Обычный современный линукс позволяет тебе положить корректное значение по адресу 0x0
Ты взял и смапил нулевую страницу
источник

EG

Emmanuel Goldstein in rust_offtopic
Alexander Krivitskiy
Ты взял и смапил нулевую страницу
Да, это именно то, что я сделал.
источник

Т8

Т-34 85 in rust_offtopic
Gymmasssorla
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf

Покажи мне где тут написано, что нулевой указатель должен лежать по адресу 0x0
Нулевой указатель может где угодно лежать. Ты понимаешь, что пишешь?
источник

EG

Emmanuel Goldstein in rust_offtopic
И это сработало.
источник

RP

Roman Proskuryakov in rust_offtopic
А ты хорош)
источник

EG

Emmanuel Goldstein in rust_offtopic
И у меня есть корректный указатель на 0x0, который не NULL согласно стандарту.
источник

AK

Alexander Krivitskiy in rust_offtopic
Emmanuel Goldstein
Единственное, что тебе гарантирует стандарт C про NULL — это то, что он не равен любому валидному указателю.
Хуево гарантирует че-то
источник

OA

Oleg Andreev in rust_offtopic
источник

G

Gymmasssorla in rust_offtopic
Т-34 85
Нулевой указатель может где угодно лежать. Ты понимаешь, что пишешь?
Да, может у разработчиков стандарта спросишь понимают ли они о том, о чём пишут?
источник

OA

Oleg Andreev in rust_offtopic
получается что нулл должен быть 0 чтоб стдлиба работала
источник

EG

Emmanuel Goldstein in rust_offtopic
Alexander Krivitskiy
Хуево гарантирует че-то
Компиляторы херово стандарту, поэтому хардкодят NULL в 0x0. В реальности значение NULL должно быть невозможно получить.
источник

EG

Emmanuel Goldstein in rust_offtopic
И такое значение есть!
источник

EG

Emmanuel Goldstein in rust_offtopic
Я гарантирую, что выделить память по адресу MAP_FAILED не выйдет.
источник

EG

Emmanuel Goldstein in rust_offtopic
Это (void*) -1 на моей системе
источник

Т8

Т-34 85 in rust_offtopic
Andrey @ozkriff Lesnikov
Смотря на какой шкале мы рассматриваем, нет? Если мы берем все более-менее используемые на практике разновидности ЯП, то алголоподобные языки на таком графике вполне себе будут расположены кластером.
Но, согласись, это не тоже самое, что исходное утверждение "всех учат алголу"
источник

EG

Emmanuel Goldstein in rust_offtopic
То, что в реальных системах NULL определён как 0, а не как MAP_FAILED — это просто легаси. Стандарт требует второго варианта.
источник

AK

Alexander Krivitskiy in rust_offtopic
Emmanuel Goldstein
Это (void*) -1 на моей системе
Эээ, ну там кернел мемори мапится. Shadow memory вроде зовётся в линуксе
источник

OA

Oleg Andreev in rust_offtopic
стандарт может что угодно требовать, важно как де факто все работает
источник

r

red75prime in rust_offtopic
Aleksandr Khristenko
Зачем в do pure [] писать do вообще?
Потому что интуитивное понимание монад у меня в очередной раз выветрилось. Да, если подумать, достаточно pure [], точнее pure Nothing. Я там тип неправильно вывел.
источник