编译或执行打破语言规则的程序的不可预测的结果,编译器,解释器和运行时系统都不得强制执行。
在 C 语言中,如果一定数量的尾随位为零,则指针与特定对齐。这需要提取指针的位,尽管只有有限数量的尾随位。显而易见的方法...
#包括 结构体 Foo { Foo(const int a) : 总计(a) {} 整数索引 = 0; 常量整型总数; }; 结构栏{ 条形图(const int a) : 总计(a) {} 可变 int 索引...
考试中的练习要求将执行以下程序后内存获得的值写在纸上。问题是,在这个程序中,我们正在访问未分配的内存......
对于大多数主要编译器来说,gcc、clang、nvc 在编译以下代码时仅产生警告(可抑制的警告)的原因是什么。 #包括 int foo() { 返回 42; } ...
我正在用 Rust 创建一个双向图,而父指针是 Rust 借用规则的一个明显问题,所以我使用了理论上安全的原始指针,因为父指针拥有子指针......
通过 const 指针而不是 const 引用传递临时值;这个解决方法格式正确吗?
所以显然,根据 C++ 标准,不能将 const 指针传递给临时变量作为函数的参数,而传递 const 引用则完全没问题,尽管两者都可以
“*s = 0”被优化掉。可能是 GCC 13 错误吗?或者一些未定义的行为?
使用 GCC 13.2,以下代码的输出取决于优化级别: #包括 #包括 char *SkipAName(char *s) { 如果((“A”<= *s && *s &l...
如果 func() 修改全局变量,int sum = func(1) + func(2) 是否会导致未定义的行为
受这篇SO帖子的启发,我想知道下面的代码片段是否会导致UB,因为add_func()和mul_func()都可以同时以未指定的顺序修改计数器: 整数计数器 = 0; 整数
在 C++14 中放置 new + reinterpret_cast:格式良好?
考虑以下 C++14 中的示例: alignas(T) 无符号字符数据[sizeof(T)]; 新(数据)T(); T* p = reinterpret_cast(数据); p->某事(); // 布? 这段代码合法吗?或者是
C 标准指定了有限浮点值在存储为整数类型时如何转换,但似乎没有指定非有限值的行为: 6.3.1.4 真实浮动...
在 Copy 类型中使用 std::ptr::write_volatile 实现内部可变性的安全性(即没有 UnsafeCell)
我正在尝试在复制值类型中实现内部可变性(用于缓存目的)。 问题是,据我所知,没有任何类型可用于内部可变性(例如 UnsafeCel...
Rust:在“Copy”类型中使用“std::ptr::write_volatile”实现内部可变性的安全性(例如,没有“UnsafeCell”)
我正在尝试在复制值类型中实现内部可变性(用于缓存目的)。 问题是,据我所知,没有任何类型可用于内部可变性(例如 UnsafeCel...
Rust:在“Copy”类型中使用“std::ptr::write_volatile”实现内部多变性的安全性(例如,没有“UnsafeCell”)
我正在尝试在复制值类型中实现内部可变性(用于缓存目的)。 问题是,据我所知,没有任何类型可用于内部可变性(例如 UnsafeCel...
我想知道将基子类向下转换为空接口子类的有效性。请参阅下面的示例。基本上我想以通用模板自由方式存储数据(从
我尝试实现 std::function 的克隆。为简单起见,我想创建一个类似 std::function 的类来处理 int(*)(int) 类型。 我面临复制构造函数的问题。当电话
C++ 将 int 转换为枚举,然后将该枚举读取为位字段安全与否?
#包括 #包括 #包括 #包括 使用命名空间 std; 枚举类 OrderFlags : uint16_t { 无 = 0, 买方 = 1, 更新音量...
当 x 是有符号整数并且 x=1 时,找到一个值 y,这样 (x < y) == (-x > -y) 将为 false?
问题问, 令 int x = 1,找到 int y 的值,其中以下语句将返回 false: (x < y) == (-x > -y) 我知道答案应该是 4 个字节长(8 个十六进制数字),但我...
我正在编写一些低级抽象,用于通过 SPI 与某些芯片进行通信,并且我创建了寄存器抽象以避免棘手的位操作。我想我可以创建界面
是否将整数视为较小整数UB的数组? 比如这段代码中是否有UB: #包括 #包括 #include // 排序 无效排序字节...
指针到指针的reinterpret_cast - 这是未定义的行为吗?
我们需要将int**强制转换为void**,可以使用reinterpret_cast。然而,它在技术上是 C++ 标准允许的,还是我们处于未定义行为领域? 使用案例 使用 Nvidia 时