開發平台(Platform): (Ex: Win10, Linux, ...)
Linux Ubuntu 20
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC 9.3
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
N/A
問題(Question):
我定義了一個 struct
typedef struct __list{
int data;
struct __list *next;
}list;
可以知道上面的 struct __list 所佔的空間是 16 byte
然後我產生了 3 個 node,每一個 linked list node 的資訊如下
第一個 node addr: 0x5650c11176b0 , data : 2
第二個 node addr: 0x5650c11176d0 , data : 3
第三個 node addr: 0x5650c11176f0 , data : 1
我的問題是:
第一個 node 位置是 0xb0,第二個 node 的位置是 0xd0
每個 node 長度為 16 byte,
為什麼第二個 node 距離第一個 node 的位置,為什麼不是 0xc0,差 16 byte,
而是差 32 byte
雖然 malloc 的 linked list 就是不連續的記憶體空間,
所以不能預期每個 node 會連在一起
但是又為什麼每個 node 都剛剛好差距 32 byte
有前輩可以解說一下嗎?
謝謝
餵入的資料(Input):
如上
預期的正確結果(Expected Output):
記憶體空間差距的疑問
錯誤結果(Wrong Output):
N/A
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
程式碼如上
補充說明(Supplement):
N/A