今天看啥  ›  专栏  ›  嵌入式微处理器

谈谈嵌入式C语言踩内存问题

嵌入式微处理器  · 公众号  ·  · 2024-11-19 12:00

文章预览

C 语言内存问题,难在于定位,定位到了就好解决了。 今天, 我 们就 来聊一 聊踩内存 。 踩内存,通过字面理解即可。 本来是操作这一块内存,因为设计失误操作到了相邻内存,篡改了相邻内存的数据。 踩内存,轻则导致功能异常,重则导致程序崩溃死机。 内存,粗略地分: 静态存储区 动态存储区 存储于相同存储区的变量才有互踩内存的可能。 一、静态存储区踩内存 下面,分享一个之前在实际项目中遇到的问题。 在Linux中,一个进程默认可以打开的文件数为1024个,fd的范围为0~1023。 项目中使用了串口,串口fd为static全局变量,某次这个fd突然变为一个超范围得值,显然被踩了。 出问题的代码如: float  arr[ 5 ]; int  count =  8 ; for  ( size_t  i =  0 ; i {     arr[i] = xxx; } 操作同属于静态存储区的arr数组出现了数组越界操作,踩了后面几个连 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览