undefined-behavior 相关问题

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

具有指向非常量指针和指向相同地址的常量参数的指针的函数调用

我想编写一个函数,该函数输入一个数据数组并使用指针输出另一个数据数组。我想知道src和dst都指向同一个地址会导致什么结果,因为我知道...

回答 2 投票 3

c中的链接列表添加到列表的开头

我正在尝试创建一个简单的程序以将值添加到链表中。该代码确实编译没有错误。我在尝试执行文件时遇到分段错误。我尝试使用...

回答 1 投票 0

原始static_vector实现中可能的未定义行为

tl; dr:我认为我的static_vector具有未定义的行为,但是我找不到它。这个问题是在Microsoft Visual C ++ 17上实现的。我有一个简单而未完成的static_vector实现,即,一个向量...

回答 1 投票 8

覆盖内置选择项

最近,我尝试覆盖三个常用命令:sleep wait select第一个(睡眠)通常是一个外部bin(在我的Debian 10中是/ bin / sleep)。第二个(等待)是内置的(您可以...

回答 1 投票 0

C联合和不确定的行为

在下面的示例代码中,是否存在未定义或实现定义的行为?我可以为工会的一个成员分配一个值,然后从另一个成员读回吗? #include #...

回答 1 投票 0

结构与结构的第一个成员之间的指针别名

C中的指针别名通常是未定义的行为(由于严格的别名),但是C11标准似乎允许别名指向结构的指针和指向结构C11 6.7的第一个成员的指针。...

回答 1 投票 2

添加到向量(C ++)时具有类字段的奇怪行为

我在以下情况下发现了一些非常奇怪的行为(在clang和GCC上)。我有一个向量,节点,有一个元素,一个类Node的实例。然后,我在节点[0]上调用一个函数,该函数添加...

回答 1 投票 4

C ++中没有未定义行为的动态数组

在了解到std :: vector在纯C ++中无法实现之后,我想知道是否可以在不引起UB的情况下编写动态数组。没有数组,我们将无法执行指针运算,.... >>>

回答 2 投票 3

通过三元运算符返回std :: string-返回垃圾内容

我有以下代码:#include #include std :: string name =“三元返回测试”; std :: string * pname =&name; const std :: string&getName(){...

回答 5 投票 0

是否要通过其名称和定义明确的引用在一个表达式中多次修改对象?

你好,我有一个简单的问题:在同一表达式中多次修改一个对象;一次通过其标识符(名称),第二次通过对其的引用或指向它的指针...

回答 3 投票 2

string.assign(string.data(),5)是定义明确的还是UB?

一位同事想写这个:std :: string_view strip_whitespace(std :: string_view sv); std :: string line =“ hello”;线= strip_whitespace(线);我说返回string_view使我...

回答 1 投票 11

c程序没有给我错误

请考虑以下程序#include #include #include typedef struct my_string {int len; char * buf; } my_string_t; my_string_t * ...

回答 2 投票 2

c程序没有给我一个错误

请考虑以下程序#include #include #include typedef struct my_string {int len; char * buf; } my_string_t; my_string_t * ...

回答 1 投票 1

生命周期扩展从函数返回引用

以下UB(行为不确定)吗?现在值悬空了真的是一个“太多”级别,并且编译器/语言规则没有完成生存期扩展吗? const int&...

回答 1 投票 -1

MSVC C / C ++编译器未定义行为警告

我使用Visual Studio 2019编译了简单的UB代码,没有任何警告或错误:int main(){int i = 10; i = i ++ + ++ i;返回我}我已启用EnableAllWarnings(/ Wall)和...

回答 1 投票 0

增量前和增量后函数调用

#include int main(){void add(); int i = 2;添加(i ++,-i); print(“%d”,i)} void add(int a,int b){print(“%d%d”,a,b); } / * a和b的值是多少,我实际上没有得到...

回答 1 投票 -1

访问数组超出C和C ++的限制[重复]

int数据[8];数据[9] = 1; C ++标准对此有何评论?这是不确定的行为吗?至少C编译器(gcc -std = c99 -pedantic -W -Wall)什么也没说。

回答 7 投票 8

检查缓冲区是否交错-定义的行为?

假设我需要一个函数,该函数检查两个任意缓冲区是否交错*。我想到的一个简单的主意是:bool isInterleaved(uint * buf1,//指向第一个指针...

回答 1 投票 0

GCC:溢出的未定义行为是否应保持逻辑一致性?

以下代码在我的系统上产生了奇怪的事情:#include void f(int x){int y = x + x; int v =!y; if(x ==(1 << 31))printf(“ y:%d,!y:%d \ n”,y,!y); } ...

回答 3 投票 0

GCC:溢出的未定义行为是否应保持逻辑一致性?

以下代码在我的系统上产生了奇怪的事情:#include void f(int x){int y = x + x; int v =!y; if(x ==(1 << 31))printf(“ y:%d,!y:%d \ n”,y,!y); } ...

回答 1 投票 0

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