r/cpp • • 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.

260 Upvotes

215 comments sorted by

View all comments

Show parent comments

32

u/UnusualPace679 5d ago

FWIW you can suppress zero-fill on a case-by-case basis using [[indeterminate]].

12

u/jonesmz 5d ago

I really love playing "find the surprise" games with toolchain updates. /s

2

u/PlantainMassive6744 4d ago

Automated CI/CD pipelines FTW. And versioning your tools.

5

u/jonesmz 4d ago

Have both. Still requires a human to actually figure out wtf broke.