У меня есть этот код, написанный на c:
int main(){
double x, y;
int a, b, c;
int *p;
и я имею:
sizeof(int)=4
sizeof(double)=8
Является ли структура памяти такой? Подробнее в графическом режиме:
IN MEMORY:(whole memory)
LE = Little Endian (INTEL)
BE = Big Endian (MIPS)
------------------
0x00000000 | | ?
------------------
. .
. .
. .
------------------
0x0012ff60 | 64(LE) 00(BE) |
------------------
------------------
0x0012ff61 | ff(LE) 12(BE) |
------------------
------------------
0x0012ff62 | 12(LE) ff(BE) |
------------------
------------------
0x0012ff63 | 00(LE) 64(BE) |
------------------
------------------
0x0012ff64 | 00(LE) 00(BE) | c if c = 256 (base10)
------------------ c = 0x00000100 (base16)
------------------
0x0012ff65 | 01(LE) 00(BE) | c 0x0012ff64 points to c variable
------------------ 0x0012ff64 is a pointer
------------------
0x0012ff66 | 00(LE) 01(BE) | c
------------------
------------------
0x0012ff67 | 00(LE) 00(BE) | c
------------------
------------------
0x0012ff68 | | b
------------------
.
.
.
------------------
0x0012ff6c | | a
------------------
.
.
.
------------------
0x0012ff70 | | y
------------------
------------------
0x0012ff71 | | y
------------------
------------------
0x0012ff72 | | y
------------------
------------------
0x0012ff73 | | y
------------------
------------------
0x0012ff74 | | y
------------------
------------------
0x0012ff75 | | y
------------------
------------------
0x0012ff76 | | y
------------------
------------------
0x0012ff77 | | y
------------------
.
.
.
------------------
0x0012ff78 | | x
------------------
.
.
.
------------------
0xfffffffff | | ?
------------------
Мой вопрос: когда мы помещаем что-то в стек, мы делаем это?
1) Я имею в виду, что мы помещаем данные в конец стека с более высоким значением адреса?
2) или мы помещаем данные на вершину стека с более низким значением адреса?
3) сколько адресов памяти занимает каждый стек? Это зависит от чего?
Спасибо