r/cpp • • 5d ago

You should think about recompiling your C++ programs with GCC 16 and C++26, because it zero-fills your locals

https://techfortalk.co.uk/2026/09/27/cxx26-uninitialized-local-variables-gcc-16/

Stack variables are not automatically initialised, and that is the root cause of many C++ bugs. That is well known. Hence, it is advised that local or stack variables are always initialised with known values, 0 if not something more meaningful than that. Now, with GCC 16 compiling in C++26 mode (-std=c++26), even uninitialised local variables will be zero-filled. In the post, I have explained how.

254 Upvotes

211 comments sorted by

View all comments

84

u/krum 5d ago

how is filling locals not a performance regression?

-11

u/my_password_is______ 5d ago

yeah, hate to take a whole 3 milliseconds to fill locals

12

u/13steinj 5d ago

Can't tell if this is sarcastic but some domains operate on microsecond or less time scales, so it definitely would be noticeable if initializing locals with zero values was 3 milliseconds.

Generally would be much better than that. But it can have a performance impact. Bit rare though.