问题描述
我在CLion中运行以下代码:
I run the following code in CLion:
int main()
{
char amessage [] = "oafaojfpa";
char * pmessage = "oafaojfpa";
char * apmessage = amessage;
amessage[2]='X';
*(pmessage+2)='X';
printf(amessage);
printf("\n");
printf(pmessage);
printf("\n");
printf(apmessage);
return(0);
}
代码 *(pmessage + 2)=' X';
应该引发异常。但是,输出为:
The code *(pmessage+2)='X';
should raise exceptions. However, the output is:
/Users/spacegoing/Library/Caches/CLion12/cmake/generated/1ab7f406/1ab7f406/Debug/TCPL_Learn
Process finished with exit code 10
CLion仅表示退出代码10.但是在哪里可以看到异常消息?
CLion only says exit code 10. But where can I view the exception message?
推荐答案
只有c ++代码会引发异常。在这种情况下,您将遇到低级错误。您会看到一个C / OS返回值10,它是总线错误。
Only c++ code throws exceptions. In this case you are experiencing low level errors. You see a C/OS return value 10 which is BUS ERROR.
总线错误在x86上如今很少见,通常在您的处理器甚至无法尝试请求的内存访问时发生。 :
Bus errors are rare nowadays on x86 and occur when your processor cannot even attempt the memory access requested, typically:
- 使用地址不满足其对齐要求的处理器指令。
- 修改只读内存
您的指针消息指向字符串文字。该字符串存储在只读存储器中,尝试修改此存储器将导致未定义的行为。通常是段错误或总线错误。
Your pointer pmessage points to a string literal. This string is stored at read-only memory and trying to modify this memory leads to undefined behavior. It usually either segfaults or bus errors.
这篇关于在哪里可以看到Clion的异常消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!