undefined-behavior 相关问题

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

==284==错误:AddressSanitizer:堆栈缓冲区下溢

我正在编写一个更简单版本的 Boyer Moore 算法,我需要使用循环缓冲区,因为可能会有很大的输入。程序应写入符号的所有位置...

回答 1 投票 0

Boyer Moore 算法简单版本中的未定义行为

我正在尝试编写没有前缀函数的更简单版本的 Boyer Moore 算法。它必须打印与模式进行比较的符号的所有位置。并在当地...

回答 1 投票 0

当使用分配给同一内存位置的多个指针时,如何在删除 C++ 中指针指向的内存后避免未定义的行为?

删除 C++ 中指针指向的内存后,我遇到了未定义的行为。当使用分配给同一内存位置的多个指针时,如何避免此问题? #包括<

回答 1 投票 0

如何将 std::tuple 元素移出类对象?

问题: 我想将元素移出类成员元组类型变量,但我想知道是否允许以下代码(接近最小的示例,仅限于 C++14): #包括<...

回答 1 投票 0

什么时候可以安全地使用 static_cast 在 C++ 中进行向下转型?

我需要知道在什么条件下可以使用 static_cast 以便将父类指针转换为子类指针而不会导致未定义的行为。 通常dynamic_cast是

回答 1 投票 0

此 Rust 代码会导致未定义的行为吗?

到目前为止,我只用 Rust 编写了安全代码。现在我正在从头开始编写一个 DBMS,以便深入理解该语言。由于性能是这里的重中之重,所以我尝试编写大部分 c...

回答 1 投票 0

在循环参数中初始化的变量范围是 C 中未定义的行为还是实现定义的行为?

就我今天所知,在C语言中,如果一个循环,for/while有括号,它就有一个范围,对吗?我在 GCC 中尝试了一些代码,情况似乎如此,例如: for(无符号字符 i=0;......

回答 2 投票 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), "意外的尾随填充...

回答 1 投票 0

在 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

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