专栏名称: EDN电子技术设计
EDN China电子技术设计为电子设计工程师和设计经理人提供前沿深度的电子资讯、设计实例应用方案。
目录
相关文章推荐
趣解商业  ·  这届铲屎官,每年花上万元给宠物“养生保健” ·  4 小时前  
跟宇宙结婚  ·  节目更新:vol.464 ... ·  2 天前  
51好读  ›  专栏  ›  EDN电子技术设计

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

EDN电子技术设计  · 公众号  ·  · 2025-05-26 17:50

正文

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


4. ‌栈溢出‌

void infinite_loop() {
    infinite_loop();  // 无限递归导致栈空间耗尽
}
int main() 

 infinite_loop(); 
}

‌原因‌:无限递归导致栈内存溢出6。

5. ‌数组越界访问‌

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. ‌访问已释放的内存‌







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