Size: a a a

2021 May 01

AN

Alex Noname in rust_offtopic
а точно можно делать (void*)(non_constant_zero_value)
источник

B

Börgar in rust_offtopic
например?
источник

B

Börgar in rust_offtopic
6.3.2.3.5
источник

EG

Emmanuel Goldstein in rust_offtopic
Да, по 6.3.2.3.5, который только что любезно привёл @borgar_umlaut.
Энивей, можешь заменить на mmap().
источник

B

Börgar in rust_offtopic
стооп, я могу этот нул дерефать?
источник

EG

Emmanuel Goldstein in rust_offtopic
Это не нулл.
источник

EG

Emmanuel Goldstein in rust_offtopic
Да, его можно дерефать.
источник

EG

Emmanuel Goldstein in rust_offtopic
Это валидно по стандарту.
источник

B

Börgar in rust_offtopic
окей, этот ноль
источник

EG

Emmanuel Goldstein in rust_offtopic
И используется в реальной жизни, хоть и очень редко.
источник

B

Börgar in rust_offtopic
и какой объект я там могу расположить?
источник

EG

Emmanuel Goldstein in rust_offtopic
Какой хочешь. Ты можешь вызвать mmap() на 0 с MAP_FIXED.
источник

П

Пух in rust_offtopic
А по стандарту там рядом с поинтером метадата должна лежать?
источник

EG

Emmanuel Goldstein in rust_offtopic
Это сработает, если у тебя есть права рута
источник

EG

Emmanuel Goldstein in rust_offtopic
Стандарт не определяет представление, только поведение.
источник

EG

Emmanuel Goldstein in rust_offtopic
NULL shall compare unequal to any other pointer
источник

B

Börgar in rust_offtopic
to an object or a function
источник

EG

Emmanuel Goldstein in rust_offtopic
А вот тут ещё один интересный вопрос
источник

EG

Emmanuel Goldstein in rust_offtopic
Вот взял ты свой (void*)0x1337
источник

EG

Emmanuel Goldstein in rust_offtopic
И пытаешься разыменовать. Разыменование поинтера это 6.5.3.2.4. Оно определено для функций и объектов.
источник