ฉันมีรหัสนี้เขียนใน 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 | | ?
------------------
คำถามของฉัน: เมื่อเรา push sth ลงใน stack เราจะทำเช่นนี้หรือไม่
1) ฉันหมายถึงเราส่งข้อมูลที่ส่วนท้ายของสแต็กโดยมีค่าที่อยู่สูงกว่าใช่ไหม
2) หรือเราส่งข้อมูลที่ด้านบนของสแต็กโดยมีค่าที่อยู่ต่ำกว่า?
3) แต่ละสแต็กใช้ที่อยู่ของหน่วยความจำจำนวนเท่าใด มันขึ้นอยู่กับอะไร
ขอบคุณ