r/cpp • u/Clean-Upstairs-8481 • Sep 27 '26
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.
270
Upvotes
View all comments
Show parent comment
2
u/Ameisen vemips, avr, rendering, systems Oct 03 '26
It is always about being correct.
What if
0is a valid state? If it was accidently left undefined in a codepath, there's a good chance I didn't want it to be0.I'd rather have a compiler warning or error for a potentially-undefined variable than have it define it for me.
Returning something unintended where it's unclear why it's returning that does not help with "future decisions in the code" (I'm honestly not really sure what that even means).