undefined-behavior 相关问题

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

指针的有效性如何与未初始化的指针值交互?

我已经看到,在 C 或 C++ 抽象机中,仅在内存中形成指向无效点的点的行为就是未定义的行为。 例如 int* arr = 新 int[10]; int* 最后 = arr + 9; // ...

回答 1 投票 0

C99 和 MISRA C:2012 中指针转换的未定义行为

我正在开发一个 C99 项目,该项目要求我们遵循 MISRA C:2012 标准。 规则 11.3 本质上是防止在不声明合理的情况下在不同对象类型之间转换指针

回答 1 投票 0

打印未初始化的变量时会发生什么?

我检查过自己,我写了一个这样的程序 int main() { 整数我; 计算<< i; return 0; } I ran the program a few times and the result was same all the time, zero. I've tried it in C an...

回答 4 投票 0

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

以下程序负责摆桌子、吃饭和清理桌子。吃饭前和吃饭后,盘子所在的地方都会被清理干净。根据 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

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