专栏名称: 21ic电子网
即时传播最新电子科技信息,汇聚业界精英精彩视点。
目录
相关文章推荐
半导体行业联盟  ·  ICDIA2025:苏州定档 ·  12 小时前  
21ic电子网  ·  华为WATCH ... ·  3 天前  
51好读  ›  专栏  ›  21ic电子网

10种初学者最常见的c语言段错误实例及原因分析

21ic电子网  · 公众号  · 半导体  · 2025-05-27 15:20

正文

请到「今天看啥」查看全文


int arr[5];
arr[5] = 10;  // 合法索引为 0~4,越界访问无效内存

‌原因‌:访问超出数组定义大小的内存区域。

#include 
 
int main() 
    int arr[5] = {01234};
 
    printf("%d\n", arr[10]); // 访问不存在的元素
    return 0;
}

执行结果:未定义行为,可能会导致程序崩溃或打印出垃圾值。

数组越界是一些新手最容易出错的地方,经常因为数组下标控制不好,导致访问越界,而这种情况可能99%几率不是立刻报段错误,也可能程序运行几年都不报错, 但是它一旦报了错,就会特别隐蔽,非常难查。

刚工作的时候在zte,曾经有2位大佬追一个德国运营商现场报的bug,花了一个月时间,最后发现是数组越界导致。

6. ‌使用未初始化的指针‌

int *p;        // 未初始化指针
*p = 42;       // 野指针指向无效地址

‌原因‌:指针未指向有效内存空间。

7. ‌访问已释放的内存‌

int *p = malloc(sizeof(int));
free(p);
*p = 10;       // 内存释放后继续使用

‌原因‌:操作已被释放的动态内存区域。

8. ‌缓冲区溢出‌

char buffer[5];
strcpy(buffer, "HelloWorld");  // 超出 buffer 容量

‌原因‌:字符串操作超过目标缓冲区大小。

9. ‌双重释放内存‌







请到「今天看啥」查看全文