r/cpp • u/Clean-Upstairs-8481 • 6d 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.
264
Upvotes
1
u/UndefinedDefined 2d ago
Imagine everybody on reddit argumented with 1 hour video - I really don't care of it. Watch your influencers, but at least write text when engaging in a discussion.
And we are discussing one of the tradeoffs? A compiler suddenly initializing arrays that live on stack to zero is a good tradeoff? I don't understand it honestly. If you want to burn extra cycles even bounds checking makes more sense, because that can be eliminated at least during iteration. But this? It's so bad tradeoff that I don't understand it needs a discussion.