undefined-behavior 相关问题

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

在 C++14 中放置 new + reinterpret_cast:格式良好?

考虑以下 C++14 中的示例: alignas(T) 无符号字符数据[sizeof(T)]; 新(数据)T(); T* p = reinterpret_cast(数据); p->某事(); // 布? 这段代码合法吗?或者是

回答 1 投票 0

将无限值分配给整数类型是否具有未定义的行为?

C 标准指定了有限浮点值在存储为整数类型时如何转换,但似乎没有指定非有限值的行为: 6.3.1.4 真实浮动...

回答 1 投票 0

在 Copy 类型中使用 std::ptr::write_volatile 实现内部可变性的安全性(即没有 UnsafeCell)

我正在尝试在复制值类型中实现内部可变性(用于缓存目的)。 问题是,据我所知,没有任何类型可用于内部可变性(例如 UnsafeCel...

回答 1 投票 0

Rust:在“Copy”类型中使用“std::ptr::write_volatile”实现内部可变性的安全性(例如,没有“UnsafeCell”)

我正在尝试在复制值类型中实现内部可变性(用于缓存目的)。 问题是,据我所知,没有任何类型可用于内部可变性(例如 UnsafeCel...

回答 1 投票 0

Rust:在“Copy”类型中使用“std::ptr::write_volatile”实现内部多变性的安全性(例如,没有“UnsafeCell”)

我正在尝试在复制值类型中实现内部可变性(用于缓存目的)。 问题是,据我所知,没有任何类型可用于内部可变性(例如 UnsafeCel...

回答 1 投票 0

将基类实例向下转型为空子接口

我想知道将基子类向下转换为空接口子类的有效性。请参阅下面的示例。基本上我想以通用模板自由方式存储数据(从

回答 1 投票 0

创建 std::function 克隆时的未定义行为

我尝试实现 std::function 的克隆。为简单起见,我想创建一个类似 std::function 的类来处理 int(*)(int) 类型。 我面临复制构造函数的问题。当电话

回答 1 投票 0

C++ 将 int 转换为枚举,然后将该枚举读取为位字段安全与否?

#包括 #包括 #包括 #包括 使用命名空间 std; 枚举类 OrderFlags : uint16_t { 无 = 0, 买方 = 1, 更新音量...

回答 1 投票 0

当 x 是有符号整数并且 x=1 时,找到一个值 y,这样 (x < y) == (-x > -y) 将为 false?

问题问, 令 int x = 1,找到 int y 的值,其中以下语句将返回 false: (x < y) == (-x > -y) 我知道答案应该是 4 个字节长(8 个十六进制数字),但我...

回答 4 投票 0

在基类中保留内存以在派生类c++中使用

我正在编写一些低级抽象,用于通过 SPI 与某些芯片进行通信,并且我创建了寄存器抽象以避免棘手的位操作。我想我可以创建界面

回答 1 投票 0

是否将整数视为较小整数 UB 的数组?

是否将整数视为较小整数UB的数组? 比如这段代码中是否有UB: #包括 #包括 #include // 排序 无效排序字节...

回答 1 投票 0

指针到指针的reinterpret_cast - 这是未定义的行为吗?

我们需要将int**强制转换为void**,可以使用reinterpret_cast。然而,它在技术上是 C++ 标准允许的,还是我们处于未定义行为领域? 使用案例 使用 Nvidia 时

回答 1 投票 0

生成前缀位掩码

我正在寻找一种可移植的方法来生成前缀位掩码,其前 n 位设置为 0 <= n <= 32 (or 64 or an arbitrary integer type bit width). Examples: prefix_bitmask(0) =

回答 4 投票 0

为什么在 C++11 之后 std::basic_string 的尾后迭代器的取消引用仍然是 UB?

众所周知,C++11 为 std::basic_string 添加了一个 null 终止符(这不计入大多数成员函数)。但是当我阅读cpp ref时,我发现对end()的取消引用是一个UB(这一段是...

回答 1 投票 0

为什么删除指针不会使其变得不可用?

所以为了更好地理解new/delete(真的是为了用小例子向自己证明为什么接口需要虚拟析构函数),我想了解内存泄漏,这样我就可能生活在恐惧之中……

回答 8 投票 0

是否允许复制指针并在副本上调用删除?

如果我复制一个指针,然后要求删除指向的分配,这是有效的C++,还是未定义的行为? char* orig = new char[100]; 字符*复制=原始; 删除[]复制;

回答 3 投票 0

可以使用初始或终端 malloc 缓冲区吗?

假设我做了如下事情: size_t长度=1000; char* p = malloc(长度); 然后我想循环遍历元素,所以最基本的是: 对于 (size_t i = 0; i < length; ++i) { p[i...

回答 1 投票 0

通过 char* 访问指针的对象表示是未定义的行为吗?

我知道这是一个奇怪的问题,但只是很好奇。 字符* ptr = 0; strcpy( (char*) &ptr, "UB?"); 这段代码的意思是“我将使用 ptr 的内存作为 char 数组。” 我认为'这是绝对的...

回答 3 投票 0

即使将指针本身的内存空间用作指针以外的类型,那不是UB吗?

我知道这是一个奇怪的问题,但只是很好奇。 字符* ptr = 0; strcpy( (char*) &ptr, "UB?"); 这段代码的意思是“我将使用 ptr 的内存作为 char 数组。” 我认为'这是绝对的...

回答 1 投票 0

分支预测和UB(未定义行为)

我对分支预测了解一些。这发生在 CPU 上,与编译无关。尽管您也许能够告诉编译器一个分支是否更有可能...

回答 3 投票 0

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