undefined-behavior 相关问题

编译或执行打破语言规则的程序的不可预测的结果,编译器,解释器和运行时系统都不得强制执行。

有符号 int 上溢-下溢会导致未定义的行为,但编译器如何预测这种情况?

有符号 int 算术运算可能会溢出和下溢,当发生这种情况时,根据 C++ 标准(和 C 标准),这是未定义的行为。届时该计划预计...

回答 1 投票 0

如何在zig中安全地转换整数

当目标类型无法保存结果值时,@intCast() 会导致未定义的行为。是否有类似 @safeIntCast() 或类似的函数会返回 CastError!anytype?

回答 1 投票 0

将 0 向左移动是否被认为是 C 中的未定义行为?

是否是未定义行为(UB): 0 << 32 0LL << 64 ? I would appreciate it if the answer includes references to the C standard.

回答 1 投票 0

在 C++20 中模拟 std::start_lifetime_as_array

根据cppreference,目前没有编译器支持std::start_lifetime_as_array。 然而,SO 答案表明它可以在 C++20 中“模拟”,如下所示: 模板

回答 1 投票 0

reinterpret_cast 到包装器的跨度

给出以下包装(简化): 模板 类包装器 { 公共:自动 val() { 返回 t; } 私人:T t; }; 我正在尝试获取一系列包装纸来

回答 1 投票 0

将指针强制转换为另一个间接级别是否安全且已定义的行为?

我正在使用嵌套的稀疏指针数组,并希望概括每个级别的指针的分配和初始化。 我决定使用 for 循环来迭代每个级别,但是......

回答 1 投票 0

是否将“指向结构体的指针的地址”转换为“第一个成员是指向结构体的指针的结构体的地址”UB?

我有一个名为 Node 的结构,其第一个成员是 Node* p_next 我有一个指向第一个节点的指针,名为 p_head 我想将 Node** 类型的 &p_head 转换为 Node*,并将其存储在

回答 1 投票 0

将数组视为灵活的数组成员?未定义的行为?

理想情况下,我想要这样的东西: 结构体S{ // ... 联盟{ 无效*ptr; 字符缓冲区[]; }; }; 也就是说,具有指向外部存储的指针或

回答 1 投票 0

调用错误的构造函数会导致分段错误

我有两个类,它们在自己的标头中独立声明,并在自己的 TU /.cpp 中定义了它们的方法。 这些类在名称和命名空间方面是相同的,但存在于

回答 1 投票 0

为什么 C++20 中由于计算而导致的有符号溢出仍然是未定义的行为

通过这个答案我了解到: 由于计算而导致的有符号溢出在 C++20 中仍然是未定义的行为,而由于转换而导致的有符号溢出在 C++20 中得到了很好的定义(这是实现...

回答 1 投票 0

为什么整数溢出未定义行为仅适用于有符号整数,而不适用于无符号整数?

使有符号整数溢出未定义行为的目的是允许编译器优化。但这不是一个与

回答 1 投票 0

reinterpret_cast从char*到uint32_t*在CPP中是未定义的行为吗?

我从事一个中型开源项目,该项目需要将原始字节解释为不同类型。这是通过创造性地使用重新解释铸造来实现的。然而,在一个简单的测试用例中,comp...

回答 1 投票 0

为什么这个 std::weak_ptr 明显阻止释放内存,以及如何检测这个错误?

在我的 C++ 代码中,我有一个 std::shared_ptr 超出了范围,这将其使用计数减少到 0,因此指向的对象被销毁。这很好用。但是,如果我有一个 std::weak_ptr 那个 poi...

回答 1 投票 0

为什么 std::launder 多维数组是未定义的行为?

我正在阅读 std::launder 的文档,我遇到了这个代码片段: int x2[2][10]; 自动 p2 = std::launder(reinterpret_cast(&x2[0][0])); // 未定义的行为:x2[1] w...

回答 1 投票 0

左移是否是 C 语言中长期考虑的未定义行为?

我知道以下C语言代码: (1 << 31) is considered Undefined Behavior due to the C standard (6.5.3 Shift Operators): The result of the shift operation is undefined if the right op...

回答 1 投票 0

std::views::chunk、std::views::transform、输入范围和格式错误

考虑方案1: #包括 #包括 #包括 #包括 int main() { std::istringstream iss{"\x{01}\x{02}\x{03}\x{04}&quo...

回答 1 投票 0

std::construct_at 和对象生命周期?

我正在审查我建议在编译时为非默认可构造对象初始化 std::array 的代码:https://stackoverflow.com/a/78676552/21691539 在第二个版本中我正在做: //

回答 1 投票 0

使用 const 的类的奇怪行为。参考资料

我想要一个具有公共只读访问权限并且可以在私有上下文中编辑的类变量。 在之前的 Stackoverflow Question 中,描述了使用 const 引用。 然而...

回答 1 投票 0

为什么编译器会优化 `g` 以始终返回 true,即使 `i == INT_MAX` 避免了未定义的行为?

在 CppCon 的这个示例中: bool f(int i) { 返回 i + 1 > i; } 布尔 g(int i) { if (i == INT_MAX) 返回 false; 否则返回f(i); } 编译器优化 f 使其始终返回 true,因为...

回答 1 投票 0

访问多字节易失性寄存器的一个字节

假设我们有一个指针 p,类型为 volatile int*。假设这是一个当前有效的指针,即从 *p 读取执行执行定义的操作,并且不是 UB。 会发生什么...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.