gpt4 book ai didi

我的单元测试无法使错误逻辑崩溃

转载 作者:行者123 更新时间:2023-11-30 19:02:31 25 4
gpt4 key购买 nike

所以我正在为我的程序进行单元测试,但有一种情况我知道它应该崩溃,但我似乎无法让它这样做,这是我遇到的情况的一个例子。

#include <stdio.h>

int main(void)
{
char buf[2] = { 0 };
int i = -1;

printf("%c", buf[i]);
return (0);
}

根据我的理解,它应该在某种熵中崩溃,但它似乎所做的只是从内存中指针所在的位置读取。或者这种行为应该是正常的,无论我们运行什么样的测试,它都不会崩溃?

最佳答案

此行为应该是未定义。这意味着它可能会崩溃,或者它可以打印垃圾,或者它不能打印任何内容,因为编译器可以假设未定义的行为不会发生,并且不会生成导致它的任何代码......或者它可以杀死你(字面意思) )如果它找到了进入安全关键应用程序的生产代码的方式。

如果您确实想对其进行测试,则需要依靠对编译器行为的了解以及针对特定平台的实现定义的技巧,例如在具有 MMU 支持的 Linux 上,对齐 buf 到内存页的开头并将前一个内存页标记为 mprotect(PROT_NONE) - 然后在尝试访问它时将得到 SIGSEGV

关于我的单元测试无法使错误逻辑崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55754635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com