[問題] hw1.2.p1b(iv)

看板EE_DSnP作者 (念澤)時間10年前 (2013/10/05 12:02), 編輯推噓5(507)
留言12則, 2人參與, 最新討論串1/3 (看更多)
這題我作到print out the contents of arr1b_3[5]時 發現間隔大小變成16bytes 如下: Contents of arr1b_3[5] are: arr1b_3[0]: 0x80f1050 arr1b_3[1]: 0x80f1060 arr1b_3[2]: 0x80f1070 arr1b_3[3]: 0x80f1080 arr1b_3[4]: 0x80f1090 但P1a的大小應該是8bytes 所以我用sizeof(*(arr1b_3[i]))去看他的大小 發現是8bytes無誤 想請問為何這裡記憶體的配置會不連續? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.217.18

10/05 12:29, , 1F
疑惑+1 另外 我的P1a的size與間隔大小都是原Po的2倍
10/05 12:29, 1F

10/05 12:30, , 2F
是因為系統(我是64bits)的關係還是我有甚麼地方出了問題??
10/05 12:30, 2F

10/05 16:14, , 3F
arr1b_3 的型態是 P1a **,所以它的 content 應該是一個
10/05 16:14, 3F

10/05 16:18, , 4F
P1a* 指標,也就是說每個 arr1b_3[i] 都會指到一個 P1a 的
10/05 16:18, 4F

10/05 16:19, , 5F
記憶體 (P1a 的 size 應該是 16 Bytes, 而非 8 Byte,
10/05 16:19, 5F

10/05 16:20, , 6F
sizeof(*(arr1b_3[i])) 看到的是 sizeof (P1a *),而非
10/05 16:20, 6F

10/05 16:22, , 7F
sizeof (P1a))。
10/05 16:22, 7F

10/05 16:24, , 8F
所以,理論上每個 arr1b_3[i] 的內容只要存一個 address,
10/05 16:24, 8F

10/05 16:25, , 9F
arr1b_3[i] 以及 arr1b_3[i+1] 的值應該只差 4 or 8, for
10/05 16:25, 9F

10/05 16:26, , 10F
32- or 64-bit machine, respectively.
10/05 16:26, 10F

10/05 16:26, , 11F
但是為什麼差了 16 or 32 呢?
10/05 16:26, 11F

10/05 16:29, , 12F
我用回文的好了...
10/05 16:29, 12F
文章代碼(AID): #1IJuzmnh (EE_DSnP)
討論串 (同標題文章)
文章代碼(AID): #1IJuzmnh (EE_DSnP)