undefined-behavior 相关问题

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

在 C 中调用空函数是否会调用 UB?

#包括 静态 int foo(){} int main(){ 如果(富()){ printf("好的 ”); } 返回0; } 我不太确定是否中止该操作,并且我在 ISO/IEC 989 中没有找到任何解释...

回答 2 投票 0

在C中调用空函数是UB吗?

#包括 静态 int foo(){} int main(){ 如果(富()){ printf("好的 ”); } 返回0; } 我不太确定是否中止该操作,并且我在 ISO/IEC 989 中没有找到任何解释...

回答 2 投票 0

std::start_lifetime_as()的实现

在 C++20 中接受 P0593R6(“为低级对象操作隐式创建对象”)后,C++23 将获得 std::start_lifetime_as() ,它“完成了[P0593..中提出的功能”。 .

回答 2 投票 0

C++:使用 C 风格强制转换为 char[](以及返回)来创建对象的按位副本是否是未定义的行为?

我发现这个问题很难准确地表达。我在我的一个大型项目中遇到了一个奇怪的情况,我需要使用按值捕获的 lambda。总之,我有一些东西......

回答 1 投票 0

我自制的strcpy以某种方式改变了两个字符串(C)

我尝试了自制的 strcpy 和一段代码,测试当我在 C 中将大字符串复制到小字符串时会发生什么。尽管如此,我第一次成功运行代码时,Y 发生了变化。 ..

回答 3 投票 0

变量声明时总是使用默认构造函数吗?

我看到了很多关于这是否是定义行为的相互矛盾的信息。 结构体C{ 整数 m = 1; int f() { 返回 2; } }; Cc; std::string s; 整数我; std::cout << c.m; std::cout...

回答 2 投票 0

std::as_writable_bytes何时触发未定义的行为

我以为我终于理解了reinterpret_cast和严格别名,然后我遇到了这个例子,稍微修改了https://en.cppreference.co上的“无效标量”示例...

回答 1 投票 0

为什么linux不能写入超过2147479552字节?

在 man 2 中,写注释部分包含以下注释: 在 Linux 上, write() (和类似的系统调用)最多传输 0x7ffff000 (2,147,479,552) 字节,返回字节数

回答 1 投票 0

取消引用从有效内存地址的整数转换的指针会导致分段错误

我正在摆弄c指针并写了这段代码 #包括 int main() { 整数a = 17; int* p1 = &a; int* p2 = (int*)(&p1); p1 = (int*)(&p2); 优先...

回答 1 投票 0

安全检查 C++17 中带符号乘法是否会溢出

我正在寻找一种方便的习惯用法来检查两个有符号整数(long 或 long long)的乘法是否会在 C++ 版本中溢出,其中有符号算术溢出是未定义的行为...

回答 1 投票 0

如果格式字符串的内存与 printf 的参数之一共享,会发生什么?

根据C标准,printf()的签名是: int printf(const char * 限制格式, ...); 据我了解,限制的含义是格式将是对...的唯一引用

回答 1 投票 0

什么时候访问“死”对象的指针有效?

首先,澄清一下,我不是在谈论取消引用无效指针! 考虑以下两个例子。 实施例1 typedef 结构 { int *p; } T; T a = { malloc(sizeof(int) }; 免费(a.p); ...

回答 4 投票 0

是否有一种故障安全方法来确定 C 中指针的对齐/尾随位?

在 C 语言中,如果一定数量的尾随位为零,则指针与特定对齐。这需要提取指针的位,尽管只有有限数量的尾随位。显而易见的方法...

回答 1 投票 0

const_cast 与可变和未定义的行为

#包括 结构体 Foo { Foo(const int a) : 总计(a) {} 整数索引 = 0; 常量整型总数; }; 结构栏{ 条形图(const int a) : 总计(a) {} 可变 int 索引...

回答 1 投票 0

写出边界矩阵

考试中的练习要求将执行以下程序后内存获得的值写在纸上。问题是,在这个程序中,我们正在访问未分配的内存......

回答 1 投票 0

函数不返回不是错误?

对于大多数主要编译器来说,gcc、clang、nvc 在编译以下代码时仅产生警告(可抑制的警告)的原因是什么。 #包括 int foo() { 返回 42; } ...

回答 1 投票 0

正在将原始指针的目标安全地移动到 Rust

我正在用 Rust 创建一个双向图,而父指针是 Rust 借用规则的一个明显问题,所以我使用了理论上安全的原始指针,因为父指针拥有子指针......

回答 1 投票 0

通过 const 指针而不是 const 引用传递临时值;这个解决方法格式正确吗?

所以显然,根据 C++ 标准,不能将 const 指针传递给临时变量作为函数的参数,而传递 const 引用则完全没问题,尽管两者都可以

回答 1 投票 0

“*s = 0”被优化掉。可能是 GCC 13 错误吗?或者一些未定义的行为?

使用 GCC 13.2,以下代码的输出取决于优化级别: #包括 #包括 char *SkipAName(char *s) { 如果((“A”<= *s && *s &l...

回答 1 投票 0

如果 func() 修改全局变量,int sum = func(1) + func(2) 是否会导致未定义的行为

受这篇SO帖子的启发,我想知道下面的代码片段是否会导致UB,因为add_func()和mul_func()都可以同时以未指定的顺序修改计数器: 整数计数器 = 0; 整数

回答 1 投票 0

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