Question: This question HAS had to be asked before, so it kills me to ask it again, but I can't find it for all of my google and searching stackoverflow.

I'm porting a bunch of linux code to windows, and a good chunk of it makes the assumption that everything is automatically initialized to zero or null. 

```
int whatever;
char* something;

```

...and then immediately doing something that may leave 'something' null, and testing against 'something'

```
if(something == NULL)
{
.......
}

```

I would REALLY like not to have to go back throughout this code and say:

```
int whatever = 0;
char* something = NULL;

```

Even though that is the proper way to deal with it. It's just very time consuming.

Otherwise, I declare a variable, and it's initialized to something crazy if I don't set it myself.

Answer: 
Interestingly, MSVC now *does* have the ability to do this. The Microsoft Security team wrote a blog post about it [here](https://msrc-blog.microsoft.com/2020/05/13/solving-uninitialized-stack-memory-on-windows/), and there's a CppCon talk [here](https://www.youtube.com/watch?v=rQWjF8NvqAU).

Unfortunately, it doesn't seem like this option is exposed to the public. [This page](https://lectem.github.io/msvc/reverse-engineering/build/2019/01/21/MSVC-hidden-flags.html) lists a bunch of 'hidden MSVC flags', and it includes an option called `-initall`, so that might be it.
What I ended-up doing was switching to /w4. At this level, it caught most of the "yeah, that's going to be an issue" areas of initialization. Otherwise, there's nothing that can change everything from being 0xcccccccc on initialization to 0x00000000 that I saw.

Massive thanks to everyone for answering this, and yes, we will tighten it up in the future.