Size: a a a

cxx.Дискуссионная

2020 August 26

S

Stas in cxx.Дискуссионная
Emmanuel Goldstein
Моё любимое
Какой результат выполнения этого кода, согласно стандарту?
Считаем, что у нас хватает прав. чтобы выполнить этот mmap().
когда даже не помнишь о
mmap()
источник

EG

Emmanuel Goldstein in cxx.Дискуссионная
Stas
когда даже не помнишь о
mmap()
Этот mmap() аллоцирует один байт виртуальной памяти по адресу 0x0.
источник

S

Stas in cxx.Дискуссионная
Emmanuel Goldstein
Этот mmap() аллоцирует один байт виртуальной памяти по адресу 0x0.
зачем ты сказал виртуальной?
источник

S

Stas in cxx.Дискуссионная
(это уже просто интересно)
источник

EG

Emmanuel Goldstein in cxx.Дискуссионная
Stas
зачем ты сказал виртуальной?
Чтобы не подразумевать, что аллоцируется какая-то память по физическому адресу 0x0.
источник

EG

Emmanuel Goldstein in cxx.Дискуссионная
Правильный ответ: стандарт подразумевает вариант 2, а все нормальные компиляторы под все нормальные платформы выдадут 1.
источник

CC

Chris Calvin in cxx.Дискуссионная
Stas
ИМЯ!
Доброе утро :)
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Emmanuel Goldstein
Правильный ответ: стандарт подразумевает вариант 2, а все нормальные компиляторы под все нормальные платформы выдадут 1.
mmap определён в стандарте?
источник

EG

Emmanuel Goldstein in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
mmap определён в стандарте?
Да. В стандарте POSIX.
Но в данном случае нам важно только то, что он в этом коде возвращает валидный аллоцированный объект.
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Emmanuel Goldstein
Да. В стандарте POSIX.
Но в данном случае нам важно только то, что он в этом коде возвращает валидный аллоцированный объект.
Ну, в рамках задачи имеет смысл говорить только про стандарт C++
источник

EG

Emmanuel Goldstein in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Ну, в рамках задачи имеет смысл говорить только про стандарт C++
*Про стандарт C. Про стандарт C++ я говорить не готов.
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
И тогда никаких ограничений на сторонюю функцию из сторонней библиотеки нет
источник

EG

Emmanuel Goldstein in cxx.Дискуссионная
С точки зрения стандарта C, здесь mmap() вернул тупо аллоцированный объект.
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Emmanuel Goldstein
С точки зрения стандарта C, здесь mmap() вернул тупо аллоцированный объект.
Ну вот это
> аллоцированный
Вообще не факт
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Если поведение mmap не стандартизовано (в стандарте языка)
источник

EG

Emmanuel Goldstein in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Ну вот это
> аллоцированный
Вообще не факт
sys/mman.h идёт в поставке компилятора и его поведение стандартизировано
источник

EG

Emmanuel Goldstein in cxx.Дискуссионная
Его поведение определено с точки зрения POSIX C standard
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Emmanuel Goldstein
sys/mman.h идёт в поставке компилятора и его поведение стандартизировано
С компилятором-то что угодно может идти, хоть tensorflow (это не шутка). Вопрос в том, что происходит согласно ISO/IEC 14882
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Или ISO/IEC 9899
источник

EG

Emmanuel Goldstein in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Или ISO/IEC 9899
Да, тогда уж этого
источник