undefined-behavior 相关问题

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

为什么返回的堆栈指针被gcc替换为空指针?

我已经在c语言中创建了以下函数,作为有关c语言中堆栈如何工作的演示/小谜:#include“ stdio.h” int * func(int i){int j = 3; j + = i;返回&j; } int ...

回答 1 投票 0

为什么我在C malloc的末尾得到一个垃圾值?

我正在编写如下的加密和解密函数:crypto(“ string”)->“ encryptedString” crypto(“ encryptedString”)->“ string”但是,当我...

回答 1 投票 -2

当我在C语言中遇到“未定义行为”错误时该怎么办?

我一直在研究CS50的问题4,并最终完成了过滤器。但是,当我的程序通过check50时,当我尝试运行./filter -e imagess / courtyard.bmp out.bmp时,我会得到这个...

回答 1 投票 0

通过将函数指针转换为void函数然后调用它来“破坏”返回值是否是未定义的行为?

说,是这样的:int SayHelloThenReturnTen(void){puts(“ Hello world”);返回10; }然后:((void(*)(void))SayHelloThenReturnTen)();这样安全吗?是否可以安全地“删除” ...

回答 1 投票 0

[C ++值初始化的向量迭代器比较

以下代码在c ++ 17中合法吗? std :: vector x {1,2,3}; std :: vector :: iterator it {};布尔结果= x.begin()!=它;以下是引自https://en.cppreference.com / ...

回答 2 投票 2


C fscanf的未定义行为

我下面有一个代码段。在macOS上,我已经在Xcode和CLion中运行了它,结果是相同的。另一方面,在Linux上使用gcc编译时,它可以完美运行。我想知道是否...

回答 2 投票 -2

是否正在访问多维数组的元素未定义行为?

请原谅令人困惑的问题标题,但我不确定如何更清楚地表达它。在C语言中,超出范围访问数组归为未定义行为。但是,保证数组元素...

回答 2 投票 2

[堆栈变量的C返回地址= NULL?

在C中,当您返回指向其局部变量(在堆栈上)的指针时,调用函数将返回null。我想了解更多有关内部情况的信息。我们...

回答 2 投票 0

[堆栈变量的C返回地址= NULL?

在C中,当您返回指向其局部变量(在堆栈上)的指针时,调用函数将返回null。我想了解更多有关内部情况的信息。我们...

回答 2 投票 1

实际上,为什么不同的编译器会计算int x = ++ i + ++ i;的不同值??

考虑此代码:int i = 1; int x = ++ i + ++ i;假设编译器可以编译该代码,我们对此可能会有一些猜测。两者++ i都返回2,导致x = 4。一个++ i返回2,并且...

回答 2 投票 1

当我使用void函数的返回值(通过强制转换函数指针)会发生什么?

当我运行以下程序时,它始终显示“是”。但是,当我将SOME_CONSTANT更改为-2时,它总是打印“ no”。这是为什么?我正在使用Visual Studio 2019编译器进行优化...

回答 3 投票 2

使未初始化变量读取的确切结果取决于另一个函数中使用的其他常数吗?

当我运行以下程序时,它始终显示“是”。但是,当我将SOME_CONSTANT更改为-2时,它总是打印“ no”。这是为什么?我正在使用Visual Studio 2019编译器进行优化...

回答 3 投票 2

C中带有#define的未定义行为

我在C语言中有一个定义,看起来像这样#define ROW_SIZE ID_SIZE + USERNAME_SIZE + EMAIL_SIZE它的值为293。然后我执行uint32_t num_rows = pager-> file_length / ROW_SIZE; pager-> ...

回答 4 投票 -2

是否正在定义_Bool?

A _Bool由C标准定义为包含0或1的无符号类型。如果_Bool类型的值1递增,据我所知,有两个选择:值环绕。 ..

回答 1 投票 2

为什么需要在列表拼接函数cpp中使用列表参数

为什么我们在拼接函数cpp中需要一个列表参数?为什么仅迭代器是不够的?如果我将l1或l2作为第二个参数l1.splice(st,l1,it,it2);传递的结果是相同的。或l1.splice(st,l2,...

回答 1 投票 2

vector.push_back(vector.back()+ 1)是否存在未定义的行为?

我想将一个新值附加到c ++ std :: vector上,并且该新值相对于向量中的最后一个值。这段代码会导致未定义的行为吗? std :: vector vector;向量....

回答 1 投票 1

c ++为什么不应该从其他线程解锁互斥锁

为什么我不应该从其他线程解锁互斥锁?在c ++标准中,它说得很清楚:如果互斥对象当前未被调用线程锁定,则它将导致未定义的行为。但是作为...

回答 1 投票 0

atomic_ref,当外部基础类型未按要求对齐时

我在p0019r8上阅读了以下内容:atomic_ref(T&obj);要求:被引用的对象应与required_alignment对齐。如果未对齐,则cppreference将此解释为UB:...

回答 1 投票 2

为什么是“ i = ++ i;”和“ i = ++ i + 2;”未定义的行为? [重复]

我发现了这篇文章:https://en.cppreference.com/w/cpp/language/eval_order我不知道为什么我= ++ i;和i = ++ i + 2;是未定义的行为。第一个例子:int i = 5; i = ++ i;结果将...

回答 1 投票 2

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