undefined-behavior 相关问题

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

如果没有成员活跃,您可以覆盖工会的内存吗?

以下程序负责摆桌子、吃饭和清理桌子。吃饭前和吃饭后,盘子所在的地方都会被清理干净。根据 C++23 标准允许这样做吗?还是未定义

回答 1 投票 0

下面的代码是有效的C吗? (空指针的指针算术)

我最近在阅读C标准ISO/IEC 9899:2018规范。其中,第6.5.6节(加法运算符)描述了对+运算符的约束。规则[8]说: 当一个表达式...

回答 1 投票 0

将 unique_ptr 传递给完成处理程序时,Boost ASIO“错误地址”错误

我正在尝试使用 ASIO 实现一个简单的 TCP 服务器。这里的主要区别是我使用 std::unique_ptr 来保存缓冲区而不是原始指针,并且我将它们移动到完整的内部...

回答 1 投票 0

calloc() 的错误实现引入了除零以及如何通过测试检测它?

我有一个作业,其中我必须编写自己的 calloc 函数(以及其他一些 Libc 函数),唯一允许的内置函数是 malloc() 和 free()。 对于上下文:...的分级...

回答 1 投票 0

装配中的数据竞争危险吗?

我知道 C 中的数据竞争是未定义的行为。 但数据竞争是硬件级别的问题吗? 如果我要在汇编中编写一个程序,其中一个线程写入某个广告......

回答 1 投票 0

在方程中传递 char* 而不是 char[] 时,函数中会出现分段错误。如何访问 char* 文字? (避免只读)

功能代码如下: 无效 TrimRight(char* s) { if(!*s) 返回; 字符*结束= 0; for(char c; c = *s; s++) { if(c == ' ') { if(end == 0) end = s; } 否则结束=0; ...

回答 1 投票 0

__builtin_clz 使用非 0 的有效输入返回错误答案

因此,在我的 M1 MacBook 上,我正在编写一个库(使用 Apple Clang),为此我需要计算某些数字的前导(和尾随,但这似乎工作得很好)零的数量。 我显然

回答 1 投票 0

使用 asm 读取“无出处”的指针被认为是安全的?

我最近写了这个相当简单的asm函数 #[内联(总是)] pub fn usize_raw_load_acquire(dst: &mut usize, src: *const usize) { 使用 std::arch::asm; debug_assert!(src.is_aligned(...

回答 1 投票 0

为什么将联合成员指针强制转换为联合指针而不是 UB,因为它们可以具有不同的大小?

在下面的代码片段中,发生了缓冲区溢出,即在执行 u->b = *b; 时。 A类{ 民众: 整数x; A() { x = 5; } }; B类{ 民众: 整数x; 浮动y; B() { x =...

回答 1 投票 0

非常量对象的const字段可以被const_cast-ed吗?

众所周知,UB从真正的常量中删除常量 常量 int i = 0; const_cast(i) = 42; // UB 但是,当您处理对非 co 的 const 引用时,这样做是完全可以的...

回答 1 投票 0

联合的未定义行为

在使用 3D 点时,我遇到了这种类型定义方法: 并点_3d { 结构体{ GL双x、y、z; } 坐标; GL双选项卡[3]; }; 因此,坐标...

回答 1 投票 0

是否可以将派生类的“this”传递给基类的构造函数?

这是我本来想写的代码: A类{ 民众: A(someType someData) { this->init(someData); } 虚拟无效 init(someType) = 0; } 这是不允许的,b...

回答 1 投票 0

将指向联合的指针转换为指向联合数组成员的元素类型的指针

我有一个工会: 联合 Obj64 { uint64_t u64; uint32_t u32[2]; uint16_t u16[4]; uint8_t u8[8]; }; static_assert(sizeof(union Obj64) == sizeof(uint64_t), "意外的尾随 padd...

回答 2 投票 0

将结构体指针初始化为NULL,然后尝试更改其成员

如果你将一个结构体指针初始化为NULL,并尝试更改其成员,这就是所谓的未定义行为(UB)吗? 我有这个代码: #包括 typedef 结构体 { ...

回答 1 投票 0

是否允许为另一个过程的可选参数传递一个不存在的假定形状数组?

在这个最小的示例中,是否允许传递 test_wrapper 的可选虚拟参数 y,该参数可能不会作为 test 的相应可选虚拟参数 y 的实际参数存在? 程序...

回答 1 投票 0

什么规则定义了有符号整型和无符号整型之和的类型?

我有一个小问题,无法解决问题的根源: 我有一个 C 文件,内容如下: #包括 int main() { 有符号整数 a = -5; 有符号整数 b = 10; 无符号整型 c = 0; 如果(一个...

回答 3 投票 0

这是使用 va_copy 未定义的行为吗?

我创建了一个打印键和值对的函数,其中键是可信的编译时文字字符串,可能包含 printf 说明符。现在我的问题是:这个函数是...

回答 1 投票 0

将“noexcept”放在可能的 UB 上

结构A { int* a_ptr; }; 结构体 B { A* b_ptr; }; struct C { // 迭代器 B* c_ptr; //... int& f() noexcept(?) { // 如果“C”有效,则提供一些访问权限 返回 c_ptr->b_pt...

回答 1 投票 0

在 C 中返回包含数组的结构体

我可以从函数返回包含数组的结构还是未定义的行为? 我使用什么标准重要吗? 例如: #包括 typedef 结构 struct_t{ ch...

回答 2 投票 0

C 堆栈上的空闲内存

我创建了一些实用程序 帮助我处理动态列表的管理。在我所讲的部分 用于处理列表中元素的删除(如果有) 添加的元素存储...

回答 3 投票 0

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