#include<stdio.h>
int main()
{
char *name = "Vikram";
printf("%s",name);
name[1]='s';
printf("%s",name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
终端上没有打印输出,只是出现分段故障.但是当我在GDB中运行它时,我得到以下 -
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400525 in main () at seg2.c:7
7 name[1]='s';
(gdb)
Run Code Online (Sandbox Code Playgroud)
这意味着程序在第7行接收SEG故障(显然我不能在常量字符数组上写入).那么为什么不执行第6行的printf()?
我观察到有时在C程序中,如果我们printf在分段错误之前的任何地方都有代码,它就不会打印.为什么会这样?