Помножим потихонечку на нуль
Oct. 24th, 2015 11:08 pmmemset may be optimized away (under the as-if rules) if the object modified by this function is not accessed again for the rest of its lifetime. For that reason, this function cannot be used to scrub memory (e.g. to fill an array that stored a password with zeroes). This optimization is prohibited for memset_s: it is guaranteed to perform the memory write.
А пока gcc (4.9.2) это не подддерживает, остаётся только извращаться. И всё равно компиляторы хитрее, а проблема этим не исчерпывается.
А пока gcc (4.9.2) это не подддерживает, остаётся только извращаться. И всё равно компиляторы хитрее, а проблема этим не исчерпывается.
no subject
Date: 2015-10-25 05:08 am (UTC)no subject
Date: 2015-10-25 10:12 pm (UTC)no subject
Date: 2015-10-26 02:44 am (UTC)Это где такое придумали и как собираются не похоронить при этом платформозависимые оптимизации?
Не, даже не так. Как избежать необходимости вводить платформозависимые пессимизации?
Вот, к примеру, код:
Что должен здесь генерировать компилятор для платформы с представлением отрицательных чисел, отличным от того, которое мы примем за стандартное (скорее всего two’s complement)?
no subject
Date: 2015-10-26 07:36 am (UTC)no subject
Date: 2015-10-26 11:22 am (UTC)no subject
Date: 2015-10-26 11:41 am (UTC)no subject
Date: 2015-10-26 12:40 pm (UTC)Если в стандартах C и C++ доопределить все места, где сказано «undefined behavior», это уже будут другие языки. Потому что та спецификация, которая получится, не будет реализуема в рамках принципа нулевого/минимального оверхеда, который является для них одним из основополагающих.
В начале 2000-х были попытки Managed C++ и потом C++/CLI. Не взлетели. (А C# взлетел. Но это тоже совсем другой язык, который выбирают другие люди и за другие причины, чем выбирают C и C++.)
Вот, кажется, оригинальное письмо.
Date: 2015-10-26 10:39 am (UTC)