核心在断言中转储

标签 c assert coredump

嗨,当我尝试在我的程序中使用断言函数时,它会转储代码。谁能告诉我我的代码有什么问题。

#include <stdio.h>
#include <assert.h>
void print_number(int myConfig) {
    assert (myConfig > 20);
    printf("\nConfig value is : %d",myConfig);
}

int main ()
{
int configArr[]={21,27,15};
for(int i=0;i<=2;i++)
  print_number (configArr[i]);
return 0;
}
输出:
Config value is : 21
Config value is : 27Assertion failed: myConfig > 20, file assert.cpp, line 4
Abort (core dumped)

最佳答案

您的代码没有任何问题。

assert 宏检查断言或假设的有效性。如果断言结果为 FALSE,则宏写入有关在 stderr 上失败的调用的信息,然后调用 abort()。 abort() 引发 SIGABRT 信号,这会导致进程异常终止。

在您的代码中,在 for 循环的第三次(从技术上讲是第二次!)迭代期间,“myConfig > 20”失败,因为 myConfig 的值为 15,因此该过程异常终止。

关于核心在断言中转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21275643/

相关文章:

c++ - 我不断收到相同的错误消息 : Segment Fault (core dumped)

c - fwrite 是否可以写入一些字节但返回零?

javascript - 脚本:在HTML文件中显示图像

c - 在 main() 中将指针分配给 NULL 后,for 循环不执行

Python:断言不打印错误消息

android - 包junit.framework不存在api 28

scala - 断言返回类型为 Future[Unit] 的 scala 方法的最佳方法是什么

c - 重新分配() : invalid pointer Aborted (core dumped)

gdb - ELF 核心文件格式

c - 在函数之间传递多维数组