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