gpt4 book ai didi

c - c编译器如何为结构分配内存?

转载 作者:太空狗 更新时间:2023-10-29 15:16:16 26 4
gpt4 key购买 nike

通过研究结构,我想到了一个问题,即编译器如何将结构存储在内存中,这意味着要考虑

struct 
{
int number;
char name[nam];
}h;

我想知道的是成员(这里是numbername)是如何存储的(例如它们是按顺序存储还是随机存储)如果数字存储在地址 2000 中并且 name 存储在 2990) ?

最佳答案

内存按结构成员的顺序分配:

+------------+------------------+-----+-----+-----+-----+-----+-----+
| | ........ | | | | | | |
| | | | | | | | |
+------------+--------+---------+-----+-----+-----+-----+-----+-----+
+ + | name[0] name[nam-1]
+------+-----+ | +------------------+----------------+
| | |
| | |
v v v
number padding name[nam]

但是,与数组不同,为结构分配的内存可能会或可能不会被打包,即,在任何成员的分配空间之后可能会有一些填充(但在第一个成员之前不允许填充)。

关于c - c编译器如何为结构分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20685748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com