结构与联合-中国县域统计年鉴2016(乡镇卷)

时间:2024-06-23 12:01:07
【文件属性】:

文件名称:结构与联合-中国县域统计年鉴2016(乡镇卷)

文件大小:457KB

文件格式:PDF

更新时间:2024-06-23 12:01:07

MISRA

6.18 结构与联合 规则 18.1(强制): 所有结构与联合的类型应该在转换单元(translation unit)的结尾是完 善的。 [未定义 35] 结构或联合的完整声明应该包含在任何涉及该结构的转换单元之内。见 ISO 9899:1990 [2] 中 6.1.2.5 节关于对不完整类型的详细描述。 struct tnode * pt; /* tnode is incomplete at this point */ struct tnode { int count; struct tnode * left; struct tnode * right; }; /* type tnode is now complete */ 规则 18.2(强制): 对象不能赋值给重叠(overlapping)对象。 [未定义 34、35] 当两个对象创建后,如果它们拥有重叠的内存空间并把一个拷贝给另外一个时,该行为 是未定义的。 规则 18.3(强制): 不能为了不相关的目的重用一块内存区域。 本规则涉及了使用内存存储某些数据并在程序仍然运行期间的其他时刻使用同一块内存 存储不相关数据的技术。很明显这依赖于两段不同的数据块,它们存在于程序运行期间不相 连的时间段而且从来不会被同时请求。 对于安全相关的系统,不建议这样做,因为它会带来许多危险。比如:一个程序可能试 图访问某个区域的某种类型的数据,而当时该区域正在存储其他类型的数据(如,由中断引 起的)。这两种类型的数据在存储上可能不同而且可能会侵占其他数据。这样在每次切换使用 时,数据可能不会正确初始化。这样的做法在并发系统中尤其是危险的。 然而要了解有时出于效率的原因可能会要求这样的存储共享。此时就非常需要采取检测 手段以确保错误类型的数据永远不会被访问,确保数据始终被适当地初始化了以及确保对其


网友评论