Помножим потихонечку на нуль
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-26 12:40 pm (UTC)Если в стандартах C и C++ доопределить все места, где сказано «undefined behavior», это уже будут другие языки. Потому что та спецификация, которая получится, не будет реализуема в рамках принципа нулевого/минимального оверхеда, который является для них одним из основополагающих.
В начале 2000-х были попытки Managed C++ и потом C++/CLI. Не взлетели. (А C# взлетел. Но это тоже совсем другой язык, который выбирают другие люди и за другие причины, чем выбирают C и C++.)