Maksym
Ну примешь и что будет?
Хорошая логика. Хрки из MeDoc также открывались докс файлы, который потом петю распространил.
Ваще дурной паттерн бинари кидать. Если тебя это не волнует, то почему других не должно?
Anonymous
бред
Maksym
100%
Maksym
добро пожаловать в интернет, в таком случае.
Я закончил оффтопить, не баньте.
Anonymous
Vladislav
никакие не надо
Vladislav
исходники - пожалуйста
Vitaliy ◀️TriΔng3l▶️
Через Emscripten прогоняйте)
Anonymous
Сайт девелоперов. Рукалицо.
Vladislav
администрация чата - за безопасное программирование 👺
Vladislav
нет, не с таким же
Anonymous
Но я всё равно теперь не буду
Vladislav
Дмитрий
Oleg
но там b++
Ivan
Наверное опасность только при cout << *b; из-за сегфолта?
🦥Alex Fails
Andrey
Andrey
Цитирую стандарт:
Насчет b++ всё чисто:
5.7.4 For the purposes of these operators ( речь про ptr + integral), a pointer to a nonarray object behaves the same as a pointer to the first element of an array of length one with the type of the object as its element type.
5.7.5 ... if the expression P points to the last element of an array object, the expression (P)+1 points one past the last element of the array object
... If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.
Т.е. имеем b указывающий на первый элемент "массива" и b + 1, указывающий сразу за последним элементом.
Constantine
Nikita
тут никто случаем не работал с OneDrive for Business api?
Matwey
Matwey
Могу ли я разместить массив из одного байта по адресу 0xffffffff?
Matwey
На какой-то платформе
Matwey
Хотя там должен быть стек с той стороны, но тем не менее
Andrey
клево, я угадал
Правильно говорить: "чувствую стандарт на уровне подсознания"
Aidar
По-моему махвелью+1 не входит в понятие адрес уже
Aidar
А значит нет
Aidar
Ну или указатель что там
Oleg
Стандарт, обв
Oleg
Но компиляторы пишут люди, так что я бы лучше не расчитывал
Matwey
Но тогда к чему комментарий про UB?
Andrey
Andrey
Я до конца эту фразу не понимаю, возможны разночтения, что именно будет UB
Oleg
Andrey
Matwey
Matwey
По причине otherwise, the behavior is undefined
Andrey
Oleg
В общем, если видишь где-то уб, то так не делай и будет тебе счастье
Matwey
Т.е. мне перед b++ нужно проверять адрес b на предмет переполнения?
Matwey
Ну это очевидно непрактично
Matwey
Странная фраза, короче, я её воспринимаю как "в случае когда поведение не определено - поведение не определено".
Igor
проверять результат malloc на 0 тоже непрактично, а что делать)
Matwey
Ну и зачем это писать было в стандарт?
Andrey
но для меня она звучит так:
Для выражения (P + N) если оба значения и P, и (P + N) лежат в одном массиве (включая "сразу за массивом") то P < (P + N) (т.е. нет переполнения) Если условие "лежат в одном массиве" нарушается то это UB
Matwey
Matwey
Спасибо
Matwey
Т.е. компилятор должен пообещать мне не размещать массивы вплотную к границе адресного пространства?
Matwey
А всегда оставлять там 'one past the last`
Matwey
Хм, ну так вроде норм. Спасибо
Matwey
Andrey
Исходя из того, что хотелось выяснить.
Matwey
Ну эдак любой вопрос можно редуцировать к ответу на этот вопрос. И вообще не задавать тогда.
Andrey
Не совсем. на ваш вопрос ответ "Да"
Andrey
Никто не мешает положить 0xffffffff в intptr_t, потом превратить в указатель на массив из одного char. только последствия не предсказуемы.
Python'еr
В прототипе функции(C) используется "константа"(определенная через define) в качестве названия аргумента, разве это допустимо? Будет ли она заменяться на выражение определенное в define?
Andrey
Если скомпилялось - значит допустимо
RattenKong 🦧🐀🦍️
Andrey
Лучше код через pastebin показать
Andrey
1. без кода сложно сказать
2. для чистого С вроде отдельный чат
Andrey