В предыдущей записи
второй ответ сподвигнул меня на эксперементы, и я получил странные результаты. Как-то не очень понятно, по какому принципу VC++ определяет, сколько памяти нужно выделить под переменную. Эксперементировал я, банально объявляя в функции main() несколько переменных и изучая их адреса. Помогите, пожалуйста понять логику выделения памяти.
Конкретный пример:
читать дальше
__int64 aa;
__int64 a;
__int32 b;
__int16 c;
char d[1];
char e[2];
char f[3];
char g[4];
char h[20];
Распределение адресов для эих переменных:
aa - 0x12FF58 \
разница составляет 0x10, т.е. под переменную 'а' выделено 16 байт
a - 0x12FF48 /
разница 0xC, т.е. под b выделено 12 байт
b - 0x12FF3C
под с выделено 0xC (12) байт
c - 0x12FF30
под d выделено 0x9 (9) байт
d - 0x12FF27
под e выделено 0xF (15) байт
e - 0x12FF18
под g выделено 0x18 (24) байта
g - 0x12FF00
под h выделено 0x1C (28) байт
h - 0x12FEE4