C对象的存储布局
Storage layout of C objects
C对象的存储布局大多没有定义。据我所知,只有 struct
个成员和数组元素定义了布局。
有趣的是,对于函数参数,C11 标准明确提到未定义布局:
The layout of the storage for parameters is unspecified. (C11 § 6.9.1 P 9)
我想知道标准是否也明确定义了对于其他对象,例如具有自动存储持续时间的对象,布局是未定义的。有人知道吗?我在标准中找不到任何相关内容。
具有内部或外部链接的对象呢?
不,我认为没有明确提到我们对相对对象布局一无所知这一事实。事实上,C 标准比这更激进,你甚至不允许在两个不是同一数组元素的变量上使用 <
运算符进行比较,也不能在指向对象的指针之间进行算术运算不属于同一个数组。
所以 "layout" 的整个问题甚至不能用 C 标准提供的术语来表述。
C对象的存储布局大多没有定义。据我所知,只有 struct
个成员和数组元素定义了布局。
有趣的是,对于函数参数,C11 标准明确提到未定义布局:
The layout of the storage for parameters is unspecified. (C11 § 6.9.1 P 9)
我想知道标准是否也明确定义了对于其他对象,例如具有自动存储持续时间的对象,布局是未定义的。有人知道吗?我在标准中找不到任何相关内容。
具有内部或外部链接的对象呢?
不,我认为没有明确提到我们对相对对象布局一无所知这一事实。事实上,C 标准比这更激进,你甚至不允许在两个不是同一数组元素的变量上使用 <
运算符进行比较,也不能在指向对象的指针之间进行算术运算不属于同一个数组。
所以 "layout" 的整个问题甚至不能用 C 标准提供的术语来表述。