cf. Environment: Microsoft Visual Studio 2022 17.5
// main.c
int main() {
int a = 0x12345, b = 0x67890;
int arr[5] = { 0x1234, 0x2345, 0x3456, 0x4567, 0x5678 };
return 0;
}
If I execute code above,
and when I check my memory allocated with debugger,
result is as follows.
0x0000002FC3EFF9F4 45 23 01 00 E#..
0x0000002FC3EFF9F8 cc cc cc cc ????
0x0000002FC3EFF9FC cc cc cc cc ????
0x0000002FC3EFFA00 cc cc cc cc ????
0x0000002FC3EFFA04 cc cc cc cc ????
0x0000002FC3EFFA08 cc cc cc cc ????
0x0000002FC3EFFA0C cc cc cc cc ????
0x0000002FC3EFFA10 cc cc cc cc ????
0x0000002FC3EFFA14 90 78 06 00 ?x..
0x0000002FC3EFFA18 cc cc cc cc ????
0x0000002FC3EFFA1C cc cc cc cc ????
0x0000002FC3EFFA20 cc cc cc cc ????
0x0000002FC3EFFA24 cc cc cc cc ????
0x0000002FC3EFFA28 cc cc cc cc ????
0x0000002FC3EFFA2C cc cc cc cc ????
0x0000002FC3EFFA30 cc cc cc cc ????
0x0000002FC3EFFA34 cc cc cc cc ????
0x0000002FC3EFFA38 34 12 00 00 4...
0x0000002FC3EFFA3C 45 23 00 00 E#..
0x0000002FC3EFFA40 56 34 00 00 V4..
0x0000002FC3EFFA44 67 45 00 00 gE..
0x0000002FC3EFFA48 78 56 00 00 xV..
What I see is that memory is NOT allocated sequentially
and there exist spaces(?) which are not allocated.
I mean, cc cc cc cc
area.
At first sight it seems not necessary. I wonder why these spaces exist.
This is mainly because VC implements buffer overflow protection by default. Use /GS- command line switch and check again.