严格的混叠规则违反
Strict aliasing rule violation
本文关键字:规则 更新时间:2023-10-16
在这个isocpp.org常见问题链接中提供的示例中,一个Fred对象正在被构造,其位置为一个缓冲区,该缓冲区正在分配给另一个对象,即
char memory[sizeof(Fred)]
据我所知,严格的混叠规则允许我们做相反的事情,即对于任何类型的对象,我们都允许在它处有一个char*
点,我们可以解引用该指针并按我们想要的方式使用它。
但是在这个例子中,情况正好相反。我错过了什么?
严格的混叠规则没有提到Fred*
必须转换为char*
。只有char*
和Fred*
类型的变量可以指向同一个对象,并且可以用来访问它。
引用(基本。第8段
如果程序试图通过该行为不是下列类型之一的全局值定义:
对象的动态类型,
[. .]char或unsigned char类型。
place -new创建一个新对象。它不会别名旧对象。当placement-new执行时,旧对象(本例中的char
数组)被认为不再存在。
在place_new之前,有一个存储空间被char
对象填充。在place -new之后,存储空间被一个Fred
对象填充。
由于没有混叠,所以没有严格混叠问题
相关文章:
- 此代码是否违反一个定义规则
- 生成文件不对文件使用隐式规则
- 变量可能尚未初始化[MIRA 2012规则9.1,强制性]
- 静态结构和一个定义规则
- 尽管遵循了规则,内存泄漏在哪里
- 这是关于成员访问规则的正确摘要吗
- uint_not_usable_without_attribute在业力规则中使用数字生成器时静态断言失败
- 增强精神解析器规则以检测语句中的特殊结尾
- 制作文件:没有规则来制定目标:如何设置正确的规则?
- 为什么此指针值不能转换为整数的规则是什么?
- 传递通用函数,用于梯形规则的数值积分
- C++内存模型中的确切规则阻止在获取操作之前重新排序
- 模板如何影响C++中隐式声明的规则?
- antlr 规则上下文是否可以独立于目标
- Bison/flex 在识别规则后等待输入
- 生成文件中隐式规则中的 -c 标志出错
- 单链接列表实现,规则为 3
- 指针算术规则中的"possibly-hypothetical"是什么意思?
- 假设声明中某些上下文中需要的名称查找规则是什么
- C++ 用于检查容器类中是否存在函数和隐式推导规则的概念