1.测试环境:gcc 4.4
2.如果程序访问无法访问的内存地址,或者说不存在的内存地址,就会报 Segmentation fault
如下面的语句
char* p="123";// p说存储的地址不确定,有可能无法写数据。
scanf("%s",p);
就会产生段错误。
比如说数组越界访问(地址有可能不存在)
比如说将整数作为字符串来打印(整数表示的地址有可能不存在)
3.注意事项.
<1> 指针必须初始化,使用指针的时候必须判断是否为NULL
<2> 数组必须初始化,数组必须判断是否越界。
<3> 变量的处理必须注意格式。
2.如果程序访问无法访问的内存地址,或者说不存在的内存地址,就会报 Segmentation fault
如下面的语句
char* p="123";// p说存储的地址不确定,有可能无法写数据。
scanf("%s",p);
就会产生段错误。
比如说数组越界访问(地址有可能不存在)
比如说将整数作为字符串来打印(整数表示的地址有可能不存在)
3.注意事项.
<1> 指针必须初始化,使用指针的时候必须判断是否为NULL
<2> 数组必须初始化,数组必须判断是否越界。
<3> 变量的处理必须注意格式。
本文介绍了在使用C语言编程时导致Segmentation fault的原因,并提供了预防此类错误的有效措施。文章通过实例解释了不当内存访问的问题,如尝试写入不可写内存区域、数组越界访问等,并列举了几项重要的注意事项。
3723

被折叠的 条评论
为什么被折叠?



