I found it today when I debug the kernel output.
The printf_s output is normal when printing a variable that has already been initialized, but there is unexpected data when the print is uninitialized.
This is the original code.
Char buf[]; DWORD Bfread; &Bfread, NULL); for (int0; i++) { printf_s ("%x\n", Buf[i]); }
The output is the same as
Supposedly a char for a byte, the output cannot be 4 bytes, so I opened with OL
This is the main entry function
The key is to movsx this instruction, he expands a symbol bit byte into eax, and then prints it out.
This makes it obvious that the actual printf_s function expands the data symbol to 32 bits before printing.
So I continue, if initialized, then when the initial, change the original code and then open
Initialize at the original code definition, not as I originally expected at the beginning of the main function initialization ~ ~
printf_s to print the non-initialized variable in debug mode