开发平台(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