C++程序 显示运行时异常
程序运行时发生运行时错误。由于这不是编译错误,因此编译将成功完成。在这里,我们将学习如何在C++中处理运行时异常。
这里讨论5种类型的运行时异常:
- 除以零。
- 段错误。
- 大内存分配/大静态内存分配。
- 类型限定符错误。
- 运行时无效内存访问。
让我们开始逐个讨论这些运行时错误。
1. 除以零
当我们将整数值除以零时,就会出现这种类型的错误,称为除以零错误。它也称为浮点异常(SIGFPE)。下面是演示除以零异常的C++程序:
输出:
2. 段错误
在下面的代码中,行*(str+1)=’n’试图写入只读内存。下面是演示段错误的C++程序:
输出:
3. 大内存分配/大静态内存分配
通常,任何编译器或任何语言都会接受10^8以下的数值。但是为了安全起见,我们通常使用10^7以下的数值。在下面的代码中,数组的大小超过了10^8,因此我们由于大内存分配而出现错误。它也被称为中止信号(SIGABRT)。
下面是演示大内存分配运行时异常的C++程序:
输出:
4. 类型指示符错误
以下代码会产生运行时错误,因为变量“a”被定义为long long int,但在scanf中使用的格式指示符是 %d,这会导致错误。
下面是演示类型指示符错误的C++程序:
输出:
prog.cpp: 在函数‘int main()’中:
prog.cpp:10:19: 警告:格式‘%d’要求类型为‘int’的参数,但是参数2的类型为‘long long int’[-Wformat=]
scanf(“%d”,&a);
5. 运行时的无效内存访问
在下面的代码中,数组被分配了一个负索引值,这将导致无效内存访问。它将给出一个垃圾值。下面是演示运行时无效内存访问的C++程序:
输出