经过上午的软件检查,又出现了几个问题,都是关于数据越界的,看来对这个问题真是认识不足啊。根据以前的出现错误的总和,特别总结如下:
结构体
只要是结构体就要有字节对齐的问题,所以在定义一个结构体后,一定要检查其大小,保证你所定义的大小与实际分配的大小一致。
准则1:结构体大小要在使用结构体前做检查,保证定义大小与实际分配大小一致。
数组
数组在汽车软件中使用极为频繁,可以说是最复杂的数据结构了。所以数据的大小,也就是数据是否越界的问题就显得极为重要,观察最近几次的错误都是由于数据越界引起的,而且这个问题很是隐蔽,不容易发现。
准则2:定义数组后,要对数组的大小也就是数量的元素的个数做检查,保证其个数是你所定义的个数,特别是人为对元素个数作改变后。在定义多个相互关联的数组后,要保证各个数组间元素数量的一致性,否则就会出现数组越界的现象。
就好像我这次为每个数组都添加了头和尾,这样数组的容量就比原来多了2.
准则3:在对软件数组进行测试时,测试3个点:数组的开头,数组的结尾,数组的中间,这3个点测试到了,基本整个数组也就没事了。