最近在将一个由RVDS2.0开发的工程,迁到RVDS4.0后,出现了奇异的问题。一个函数在调用一个数组时出现崩溃。最终确认是因强制转换,引发变量地址对齐的问题。
原数组定义为: unsigned char buff[]; 但在引用时为, lcd_show((unsigned short *)buff). 因char在内存中可能是奇地址,导致不能正常存取。
解决办法也很简单:在变量定时加上__align(n)指示。n可取2,4,8等。
原数组定义为: unsigned char buff[]; 但在引用时为, lcd_show((unsigned short *)buff). 因char在内存中可能是奇地址,导致不能正常存取。
解决办法也很简单:在变量定时加上__align(n)指示。n可取2,4,8等。